java類的初始化順序,java類初始化順序

來源:互聯網
上載者:User

java類的初始化順序,java類初始化順序

 在java中,當我們new一個對象時,對象中的成員,初始化塊以及構造方法的載入是有一定的順序的,看下面一副圖:

    

一、單類(無基類)下的初始化順序:

public class Parent {

static String staticStr = "父類靜態變數";

private String str = "父類成員變數";

 

static {

System.out.println(staticStr);

  System.out.println("父類靜態初始化塊");

}

 

{

System.out.println(str);

  System.out.println("父類初始化塊");

}

 

public Parent() {

  System.out.println("父類構造");

}

 

public static void main(String[] args) {

  new Parent();

     //new Parent();

}

}

輸出:父類靜態變數

           父類靜態初始化塊

           父類成員變數

           父類初始化塊

           父類構造

            /* 若放開第二行new Parent(),輸出結果會增加以下內容:

            父類成員變數

           父類初始化塊

           父類構造

            */

單類順序:  ①靜態(成員,塊) > 非靜態(成員,塊) > 構造

                  ②成員和塊的順序取決於“他們在類中定義時的前後位置,誰靠前誰先被初始化”。

                  ③靜態成員或塊是屬於類的,所以優先初始化,且只會初始化一次。

                  ④構造最後被執行。

 

二、繼承類的初始化順序

 

class SubClass extends Parent {

static String staticStr = "子類靜態變數";

private String str = "子類成員變數";

 

static {

System.out.println(staticStr);

  System.out.println("子類靜態初始化塊");

}

 

{

System.out.println(str);

  System.out.println("子類初始化塊");

}

 

public SubClass() {

  System.out.println("子類構造");

}

 

public static void main(String[] args) {

System.out.println("子類main方法");

  new SubClass();

}

}

輸出:父類靜態變數

          父類靜態初始化塊

          子類靜態變數

          子類靜態初始化塊

          子類main方法

          父類成員變數

          父類初始化塊

          父類構造

          子類成員變數

          子類初始化塊

          子類構造

繼承類順序:

                ①父類靜態(成員,塊) > 子類靜態(成員,塊) > 父類非靜態(成員,塊) > 父類構造 > 子類非靜態(成員,塊)> 子類構造

                ②同樣的,成員和塊的順序和單類中一樣

                ③先有父才有子,但是子類的靜態(成員和塊)先於父類的非靜態(成員和塊),因為靜態是屬於類的;對於非靜態和構造,自然是父類中全部載入完畢,再載入子類。

 

關注老薑談技術,號:helojava,或者掃描下面二維碼。


每日一帖,技術雞湯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.