私のプログラム
class Building {
Building() {
System.out.print("b ");
}
Building(String name) {
this();
System.out.print("bn " + name);
}
};
public class House extends Building {
House() {
System.out.print("h "); // this is line# 1
}
House(String name) {
this(); // This is line#2
System.out.print("hn " + name);
}
public static void main(String[] args) {
new House("x ");
}
}
super()
コンパイラーが子クラスのコンストラクターの最初の行として呼び出しを書き込むことがわかっています。したがって、出力は次のようにすべきではありません。
b
(コンパイラからの呼び出し、super() への呼び出し、行 #2 の前)
b
(再度、コンパイラーが記述した super() への呼び出しから、行番号 1 の前)
h hn x
しかし、出力は
b h hn x
何故ですか?