聽了很久的類加載執行順序,本身一直沒有實踐過,今天休息時想到這個問題,親自動手驗證以下:測試
上代碼spa
public class Domain { public Domain(String str){ System.out.println(str); } } public class SuperClass { private static Domain d1 = new Domain("father static member variable"); private Domain d2 = new Domain("father common member variable"); static{ System.out.println("father static code block"); } { System.out.println("father dynamic code block"); } SuperClass(){ System.out.println("father no arguments constructor"); } } public class SubClass extends SuperClass { private static Domain d1 = new Domain("child static member variable"); private Domain d2 = new Domain("child common member variable"); static { System.out.println("child static code block"); } { System.out.println("child dynamic code block"); } public SubClass(){ System.out.println("child no arguments constructor"); }
public static void main(String[] args){ SubClass t1 = new SubClass(); } }
以上三個類,SubClass繼承自SuperClass,Domain爲測試用的類。執行結果以下:code