class Book {
Book() {
System.out.print("A");
}
Book(String title) {
System.out.print("B");
this();
}
}
public class Main {
public static void main(String[] args) {
new Book("Java");
}
}
選択肢
- あなたの回答
- 正解
正解
D. コンパイルエラーになる
詳細解説
this() による同じクラスの別コンストラクタ呼び出しは、コンストラクタ本体の最初の文でなければなりません。このコードでは System.out.print("B") の後に this() があるためコンパイルエラーです。
なぜ他の選択肢が違うのか
- this() が先頭にないため、実行結果は得られません。
- 呼び出し順序を変えて解釈することはできません。
- 途中まで実行されるのではなく、コンパイル段階で止まります。
罠ポイント
this() と super() はどちらもコンストラクタの先頭にしか書けません。同時に両方を書くこともできません。