this() を2行目に書く
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
new P();
}
}
class P {
P() {
System.out.print("A");
this(1);
}
P(int n) {
System.out.print(n);
}
}
- A
A1と出力される - B
1Aと出力される - C 実行時に例外が発生する
- D コンパイルエラーになる
正解と解説を見る
正解: D
- A: 実行まで進まないので、何も出力されません。
- B: 実行まで進まないので、何も出力されません。
- C: this(...) の位置の誤りはコンパイル時に見つかります。
- D: this(...) はコンストラクタの最初の文にしか書けないので、2行目に書くとコンパイルエラーです。
ポイント
this(...)とsuper(...)は、コンストラクタの 最初の文 にしか書けません。