Несколько типов переменных экземпляра для класса? - PullRequest
0 голосов
/ 03 декабря 2010

Возможно ли обрабатывать класс с различными типами переменных экземпляра?Допустим, у меня есть класс, в котором есть две переменные экземпляра типа int, давайте назовем их:

@interface ClassA: NSObject {
  int x;
  int y;
}
@end

В то же время я хочу расширить его, предоставив ему возможность обрабатывать другой тип таких переменных экземпляра, как:

@interface ClassB: ClassA {
  double x;
  double y;
}

Возможно ли это вообще?

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

Нет. Вы получите предупреждение во время компиляции «Дубликат члена 'x'» и «Дубликат члена 'y'».

1 голос
/ 03 декабря 2010

Я почти уверен, что вы не можете сделать это по двум причинам:

  1. Вы не можете повторять переменные экземпляра (int x, double x).
  2. Это довольно схематичнонаследуют от одного класса, но затем хотят изменить тип переменных его экземпляра.

Если вы не хотите создавать отдельные классы для этих вариантов использования, возможно, будет работать абстрактный суперкласс.Если бы я больше рассказал о том, что вы пытаетесь решить, я мог бы быть немного более полезным в этой области.

Похоже, что вы действительно хотите, это параметрический полиморфизм, которого Objective C неслужба поддержки.Некоторые классы Какао, такие как семейство NSNumber, используют абстрактный суперкласс со многими конкретными подклассами, предположительно с различными макетами переменных экземпляра (как вы описали в своем вопросе).Затем логика соответствующим образом разделяется между абстрактным и конкретным.Это шаблон проектирования Cluster компании Cocoa, который является своего рода ослабленным специальным ответом на параметрический полиморфизм языков, таких как C ++ и Haskell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...