程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java類的初始化順序,java類初始化順序

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

編輯:JAVA綜合教程

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,或者掃描下面二維碼。


每日一帖,技術雞湯。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved