質問: new Child(); s.callName();// 期待通り c.callName();// 期待通り s.callSuperName();// 期待通り c.callSuperName();// あれれ? } } ``` ### 出力結果 i am super i am child i am super i am child
回答: こんにちは。回答いたします。 **1. なぜそのような動作をしているか** c.callSuperName()コールでは、確かに Super#callSuperName()が実行されます。 Super#callSuperName()に実装されている「callName();」の行は 「this.callName();」に読み替えることができます。 今回のケースでは、thisは「Child c」を表していますので、結果として Child#callName() が実行されることになります。 **2. 期待通りの表示にするには** こちらは、すみません、調査後改めて回答致します。