スーパーコンストラクターが実行された後にのみインスタンスメンバーにアクセスできるという本を読みました。
私は次のコードに出くわしました:
class Parent {
Parent() {
printIt();
}
void printIt() {
System.out.println("I'm in a overridden method. Great.");
}
}
class Child extends Parent {
int i = 100;
public static void main(String[] args) {
Parent p = new Child();
p.printIt();
}
void printIt() {
System.out.print(i + " ");
}
}
そしてそれは印刷します:
0100
私の質問は次のようになります:
スーパーコンストラクターの実行後にのみインスタンスメンバーにアクセスできる場合、ParentクラスのprintIt()メソッド(実際にはポリモーフィズムのためにChildのprintIt())を実行すると、初期化されていないものにアクセスできたのはなぜですか?親のコンストラクターがまだ実行を終了していなくても、子のインスタンス変数i?
私は何が欠けていますか?