父類 子類 動態代碼塊 靜態代碼塊 構造函數 執行順序

執行順序:對於靜態變量、靜態初始化塊、變量、初始化塊、構造器,它們的初始化順序以此是(靜態變量、靜態初始化塊)>(變量、初始化塊)>構造器
第一種情形
父類和子類 都有動態代碼塊和靜態塊時

class Father {
    {
        System.out.println("父類構造塊");// 3
    }
    static {
        System.out.println("父類靜態塊");// 1
    }
}

public class Lianxi14 extends Father {
    {
        System.out.println("子類構造塊");// 4
    }
    static {
        System.out.println("子類靜態塊");// 2
    }
    public static void main(String[] args) {
        new Lianxi14();
    }

輸出結果爲:

父類靜態塊
子類靜態塊
父類構造塊
子類構造塊

第二種情形
在父類和子類中加入構造函數

class Father {
    {
        System.out.println("父類構造塊");// 3
    }
    static {
        System.out.println("父類靜態塊");// 1
    }

    Father() {
        System.out.println("父類構造函數");//4
    }
}

public class Lianxi14 extends Father {
    {
        System.out.println("子類構造塊");// 5
    }
    static {
        System.out.println("子類靜態塊");// 2
    }

    Lianxi14() {
        System.out.println("子類構造函數");//6
    }

    public static void main(String[] args) {
        new Lianxi14();
    }

}

執行順序如下:

父類靜態塊
子類靜態塊
父類構造塊
父類構造函數
子類構造塊
子類構造函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章