初期化子
static初期化子は知ってたけど、インスタンス初期化子は知らなかった・・・
ってわけで、挙動確認。
class A { static { System.out.println("a s_init"); } { System.out.println("a init"); } A() { System.out.println("a cons"); } } class B extends A { static { System.out.println("b s_init"); } { System.out.println("b init"); } B() { System.out.println("b cons"); } } public class InitTest { public static void main(String[] args) { System.out.println("main"); new B(); } }
出力:
main a s_init b s_init a init a cons b init b cons
super呼び出し後にインスタンス初期化子が呼ばれる形かな。
そういや、static初期化子の実行はmainの前にごっそりってわけじゃなくて、
クラスが必要になってからだったな。