Foo私はクラスのサブクラスを持っていますBar:
@interface Foo : Bar
{
- (void)methodName;
}
クラスのメソッドmethodNameをオーバーライドするメソッドがあります。Bar
のスーパークラスのオブジェクトがありますFoo:
Bar *bar = [[Bar alloc] init];
次に、このオブジェクトにメッセージを送信します。
[bar methodName];
の代わりにFooの実装が実行されるのはなぜですか? でのこのメソッドの実装は、 での実装を完全にオーバーライドし、を呼び出しません。オブジェクトがサブクラスの場合、サブクラスの実装が呼び出されることは明らかですが、メッセージがスーパークラスのオブジェクトに送信されたときに実行されるのはなぜですか?methodNameBarFooBar[super methodName]
前もって感謝します。