class Parent {
Parent(int n) { System.out.println("Parent:" + n); }
}
class Child extends Parent {
Child() {
System.out.println("before");
super(42);
}
}
public class Main {
public static void main(String[] args) { new Child(); }
}
選択肢
- あなたの回答
- 正解
正解
C. コンパイルエラーになる
詳細解説
super() はコンストラクタ本体の最初の文でなければなりません。println の後に super() を書いているためコンパイルエラーになります。
なぜ他の選択肢が違うのか
- super() が先頭にないためコンパイルエラーになり実行できません。
- super() の制約でコンパイル段階で弾かれます。
- コンパイルエラーのため実行時エラーにはなりません。
罠ポイント
super() と this() はどちらもコンストラクタの最初の文のみ有効で、両方を同一コンストラクタに書くこともできません。