在objective-c中,如果方法在该类的类和继承类中定义,并且我从另一个类调用该方法,那么编译器将如何知道要选择哪种方法?父类中的原始方法或继承类中的重写方法。在我的代码中,我通过父类调用方法名称,但编译器正在继承类中拾取方法。在类和继承类中定义的方法
例子:
可以说我有一个父类Super
和子类Sub
。他们两人实施方法Match
。现在,在另一个类,说OtherClass
,我定义
Super *super = [[Super alloc]init];
和我打电话的方法Match
在OtherClass
[super Match]
将在Super
Match
被称为或Sub
Match
被称为?
您对其中一个答案满意吗?你确定你在两个类中都有相同的方法签名吗? – Avt
是的。我在这两个类中都有相同的方法签名。这个问题是我在我编辑的问题中提到的,因为没有使用我的子类对象调用我的方法,而是使用我的超类对象,被调用的方法是子类。如果你可以阐明为什么会发生这种情况,那会很好。 – azmuhak
这里'[[Super alloc] init]'你正在创建超级对象。所以'Super'中的'Match'将被调用。 – Avt