Java類初始化加載過程

聯(lián)動:為什么構(gòu)造代碼塊先于構(gòu)造函數(shù)執(zhí)行?

梳理一下Java中類的加載順序~

//父類
public class Father {

    static {
        System.out.println("父類靜態(tài)代碼塊...");
    }

    {
        System.out.println("父類構(gòu)造代碼塊...");
    }

    public Father() {
        System.out.println("父類構(gòu)造函數(shù)...");
    }

    public void run() {
        System.out.println("父類方法...");
    }

}

//子類
public class Son extends Father {

    public static int a = 1;

    static {
        a = 2;
        System.out.println("子類靜態(tài)代碼塊...");
    }

    public String name;

    public Son(String name) {
        System.out.println("子類構(gòu)造函數(shù)...");
        this.name = name;
    }

    {
        a = 3;
        System.out.println("子類構(gòu)造代碼塊...");
    }

    @Override
    public void run() {
        System.out.println("子類復(fù)寫父類方法: " + a);
    }

    public static void main(String[] args) {
        Father father = new Son("java boy");
        father.run();
        new Son("java boy");
    }

}

打印結(jié)果:

父類靜態(tài)代碼塊...
子類靜態(tài)代碼塊...
父類構(gòu)造代碼塊...
父類構(gòu)造函數(shù)...
子類構(gòu)造代碼塊...
子類構(gòu)造函數(shù)...
子類復(fù)寫父類方法: 3
父類構(gòu)造代碼塊...
父類構(gòu)造函數(shù)...
子類構(gòu)造代碼塊...
子類構(gòu)造函數(shù)...

結(jié)論:

1. 父類先于子類進(jìn)行初始化;
2. 靜態(tài)代碼塊隨著類的加載而加載,且只執(zhí)行一次;
3. 構(gòu)造代碼塊先于構(gòu)造函數(shù)執(zhí)行,兩者每new一次就執(zhí)行一次;
4. 從以上3點(diǎn)可以得出執(zhí)行順序:父類靜態(tài)代碼塊->子類靜態(tài)代碼塊->父類構(gòu)造代碼塊->父類構(gòu)造函數(shù)->子類構(gòu)造代碼塊->子類構(gòu)造函數(shù)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,422評論 25 708
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • 作者:成 富, 軟件工程師, IBM 中國軟件開發(fā)中心 類加載器(class loader)是 Java?中的一個(gè)...
    Android技術(shù)研究閱讀 3,912評論 0 74
  • 有網(wǎng)友建議我先說寶釵,這不為難木夫我嗎? 寶玉,黛玉,寶釵三個(gè)人物在《紅樓夢》書中都是動態(tài)人物。 寶黛同體很好理解...
    木夫009閱讀 419評論 8 4
  • 1. 記筆記是為了心里安慰。記下了,也不知道是什么意思。還有的人連筆記都不會記。正如,有的人的思考和邏輯已經(jīng)相當(dāng)好...
    葭州寒雪閱讀 145評論 0 0