Objective-Cにおけるselfとsuperの挙動
Objective-Cでは、selfとsuperの挙動に注意が必要です。
- self:実行中のオブジェクトそのもの
- super:親クラスに定義されているメソッドやインスタンス
コードを見ます。
- ParentClassは、
- methodという名前のメソッドを持っています。
- MyClassは、
- ParentClassをスーパークラスに持ちます。
- ParentClassで定義されたmethodをオーバーライドしています。
- selfとsuperのそれぞれを元にmethodを実行するメソッドを持っています。
- ChildClassは、
- MyClassをスーパークラスに持ちます。
- MyClass(ParentClass)で定義されたmethodを更にオーバーライドしています。
この状態で、main.m内でMyClassとChildClassをインスタンス化し、selfとsuperを元にmethodを実行しているそれぞれのメソッドを実行します。
特にsuperの挙動(どちらもHello ParentClass!が出力されている)に注目ください。