コードは次のようになります。
class Base {
int x = 10;
public Base() {
this.printMessage();
x = 20;
}
public void printMessage() {
System.out.println("Base.x = " + x);
}
}
class Sub extends Base {
int x = 30;
public Sub() {
this.printMessage();
x = 40;
}
public void printMessage() {
System.out.println("Sub.x = " + x);
}
}
public class DispatchTest {
public static void main(String[] args) {
Base b = new Sub();
System.out.println(b.x);
}
}
結果は次のとおりです。
Sub.x = 0
Sub.x = 30
20
このコードがどのように実行されるか教えてください。クラス Base のコンストラクターが実行されないのはなぜですか?