Java之創建對象初始化順序

創建順序如下

  1. 父類靜態成員(包括方法和變量,按順序初始化)
  2. 子類靜態成員(包括方法和變量,按順序初始化)
  3. 父類成員變量(包括非靜態代碼塊)
  4. 父類構造方法
  5. 子類成員變量(包括非靜態代碼塊)
  6. 子類構造方法

驗證代碼

// 主類,用來創建子類對象,驗證我們的結果
public class Main {
    public static void main(String[] args) {
        new Son();
    }
}

// 書類,用於測試對象成員變量
class Book{
    public Book(String user){
        System.out.println(user + "成員變量");
    }
}

// 子類
class Son extends Fa{
    static Book book= new Book("子類靜態");
    static{
        System.out.println("子類靜態代碼塊");
    }
    
    Book sBook = new Book("子類");
    {
        System.out.println("子類非靜態代碼塊");
    }
    
    public Son(){
        System.out.println("子類構造方法");
    }
}

// 父類
class Fa{
    static Book book= new Book("父類靜態");
    static{
        System.out.println("父類靜態代碼塊");
    }
    
    Book fBook = new Book("父類");
    {
        System.out.println("父類非靜態代碼塊");
    }

    public Fa(){
        System.out.println("父類構造方法");
    }
}


輸出結果

父類靜態成員變量
父類靜態代碼塊
子類靜態成員變量
子類靜態代碼塊
父類成員變量
父類非靜態代碼塊
父類構造方法
子類成員變量
子類非靜態代碼塊
子類構造方法

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