デフォルトコンストラクタ
CodeZineの「突然ですがクイズです!」っていう記事を見てて、己の不勉強さを心より恥じる。
以下のコードを実行した際に、デフォルトコンストラクタの挙動を勘違いしていたのさ。
package test; public class Project1 { public static void main(String[] args) { new TChild(); } } class TParent { public TParent() { this.foo(); } protected void foo() { System.out.println("TParent#foo"); } } class TChild extends TParent { public TChild() { } protected void foo() { super.foo(); System.out.println("TChild#foo"); } }
てっきり、「TChildクラスでデフォルトコンストラクタオーバーライドしちゃったら、何も表示されないジャン」とか思ってたんス。
でも、デフォルトコンストラクタは、ちゃんとTParentクラスを呼び出すのね。
まぁ、そう言われればそうだな。
オーバーライドしてつぶしちゃうのは、引数ありの場合ですね。ハイ。