初期化のタイミングについて
変数の初期化タイミングについても、みんな当たり前のように知っていると思うけど、非短絡論理演算子のように度忘れしたり、たまに疑問になったりしませんか。
ということで、ちょっと動かしてみました。
class Parent{ {System.out.println("parent1 ");} public Parent(){System.out.println("parent2 ");} } class Child extends Parent{ static {System.out.println("child1");} public Child(){System.out.println("child2 ");} {System.out.println("child3 ");} static {System.out.println("child4");} } class GrandChild extends Child{ public static void main(String[] args){ System.out.println("grandchild1 "); new GrandChild(); System.out.println("grandchild2 "); } }
実行結果
child1 child4 grandchild1 parent1 parent2 child3 child2 grandchild2
静的初期化 > インスタンス初期化 > コンストラクタ という順で初期化されましたね。
特に新たな発見があったわけではなく、なんというか普通でした。