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