私の理解によると、デフォルトコンストラクターはオブジェクトの状態をデフォルト値に初期化するため、このような明示的な引数なしのパブリックコンストラクターを提供すると、d と e の値はどのようにゼロに初期化されるのでしょうか。コンストラクターは呼び出されません。
public class B extends A{
private int d;
private int e;
public B() {
System.out.println(d);
System.out.println(e);
}
}
編集::デフォルトのコンストラクターが行う唯一のことはsuper()
、ここで明示的に言及されたコンストラクターがあり、A がそのコンストラクターで 17 に初期化される保護された変数 c を持っている場合にどうなるかです。super()
独自のコンストラクターを使用しているため、その変更を確認できるように明示的に呼び出すべきではありませんか? B がまだ継承によって 17 の値を取得しているのはなぜですか?