ベイツとシエラ より:
class Top {
public Top(String s) {
System.out.print("B");
}
}
public class Bottom2 extends Top {
public Bottom2(String s) {
System.out.print("D");
}
public static void main(String[] args) {
new Bottom2("C");
System.out.println(" ");
}
}
選択肢は次のとおりです。
A.BD
B. DB
C.BDC
D. DBC
E. コンパイルが失敗する
答え:
® ✓ えは正解です。Top には引数のないコンストラクターがないため、Bottom2 のコンストラクターでの暗黙の super() 呼び出しを満たすことができません。クラスに明示的に定義されたコンストラクターがない場合にのみ、デフォルトの引数のないコンストラクターがコンパイラーによって生成されます。
しかし、私は混乱しています。public Top(String s) { System.out.print("B"); ではありませんか? 明示的に定義されたコンストラクター? どこが間違っていますか?
ここでこの質問を見たことがありますが、答えがよくわかりませんでした。