виртуальные функции в Objective C - PullRequest
15 голосов
/ 10 мая 2011

Как объявить виртуальные функции в Objective C.

virtual void A(int s);

Как объявить то же самое в Objective C.

-(void)A:(int)s //normal declaration

1 Ответ

43 голосов
/ 10 мая 2011

Objective-c не поддерживает виртуальные функции, или, говоря иначе, все функции в классах obj-c являются виртуальными, так как вызовы методов определяются во время выполнения.

Если ваш подкласс переопределяет метод из суперкласса и вы ссылаетесь на экземпляр подкласса, используя указатель на суперкласс, то метод подкласса будет вызван:

@interface A{
}
-(void) someMethod;
@end

@interface B : A{
}
-(void) someMethod;
@end

...
A* obj = [[B alloc] init];
[obj someMethod]; // method implementation from B will be called
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...