類加載執行順序

聽了很久的類加載執行順序,本身一直沒有實踐過,今天休息時想到這個問題,親自動手驗證以下:測試

上代碼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

相關文章
相關標籤/搜索