Java中類的初始化順序

2021-09-22 14:06:17 字數 1262 閱讀 9619

public class classinitordertest 

//成員變數

private string field = "member field";

//非靜態**塊

//構造器

public classinitordertest()

public static void main(string args)

}

程式輸出結果:

static field

static block

member field

non-static block

constructor

結論:

靜態變數 > 靜態初始塊 > 成員變數 > 非靜態初始塊 > 構造器
class parent 

//成員變數

private string parentfield = "parent member field";

//非靜態**塊

//父類構造器

public parent()

}public class child extends parent

//子類成員變數

private string childfield = "child member field";

//子類非靜態**塊

//子類構造器

public child()

public static void main(string args)

}

輸出結果:

parent static field

parent static block

child static field

child static block

parent member field

parent non-static block

parent constructor

child member field

child non-static block

child constructor

結論:

父類靜態變數 > 父類靜態初始塊 > 子類靜態變數 > 子類靜態初始塊 > 父類成員變數 > 父類非靜態初始塊 > 父類構造器 > 子類成員變數 > 子類非靜態初始塊 > 子類構造器

Java中類初始化的順序

在建立物件時,物件所在類的所有資料成員會首先進行初始化,如果其中的成員變數有物件,那麼它們也會按照順序執行初始化工作。在所有類成員初始化完成後,才呼叫物件所在類的構造方法建立物件。構造方法作用就是初始化。靜態物件 變數 在非靜態物件前初始化。靜態物件 變數 只初始化一次,再次呼叫就不初始化了,但非靜...

Java類初始化順序

類的初始化順序 首先執行父類靜態的內容,父類靜態的內容執行完畢後,接著去執行子類的靜態的內容,當子類的靜態內容執行完畢之後,再去看父類有沒有非靜態 塊,如果有就執行父類的非靜態 塊,父類的非靜態 塊執行完畢,接著執行父類的構造方法 父類的構造方法執行完畢之後,它接著去看子類有沒有非靜態 塊,如果有就...

java類初始化順序

我們大家都知道,對於靜態變數 靜態初始化塊 變數 初始化塊 構造器,它們的初始化順序依次是 靜態變數 靜態初始化塊 變數 初始化塊 構造器。我們也可以通過下面的測試 來驗證這一點 public class initialordertest 初始化塊 構造器 public initialorderte...