class Parent {
Parent() { System.out.print("P"); }
}
class Child extends Parent {
Child() { System.out.print("C"); }
}
public class Main {
public static void main(String[] args) {
new Child();
}
}
選択肢
- あなたの回答
- 正解
正解
C. PC
詳細解説
サブクラスのコンストラクタは暗黙的に super() を先頭で呼び出します。そのため Parent のコンストラクタが先に実行されて P が出力され、次に Child のコンストラクタで C が出力されます。
なぜ他の選択肢が違うのか
- Child のコンストラクタも実行されるため C も表示されます。
- Parent のコンストラクタも実行されるため P も表示されます。
- 親が先に実行されるため CP ではなく PC の順です。
罠ポイント
Java ではコンストラクタチェーンにより必ず Object まで遡って親から順にコンストラクタが実行されます。