類的載入和初始化順序

2021-09-13 10:12:45 字數 764 閱讀 1569

靜態變數,靜態塊(按文字順序載入)->非靜態變數,非靜態塊(按文字順序載入)->構造器

(靜態)塊不能在(靜態)變數宣告之前應用它。

對於繼承關係中的類的初始化:

父類靜態變數,父類靜態塊

->子類靜態變數,子類靜態塊

->父類非靜態變數,父類非靜態塊

->父類構造器

->子類非靜態變數,子類非靜態塊

->子類構造器

如果在靜態塊中呼叫靜態方法,在載入時會先執行靜態方法,再繼續載入。

所有方法都是被呼叫後才會被載入。

class inferior extends test

string str2 = "inferior non-static string";

public inferior()

}public class test

string str2 = "superior non-static string";

public test()

public static void main(string args)

}輸出:

superior static string

inferior static string

superior non-static string

superior constructor

inferior non-static string

inferior constructor

變數初始化順序及類的載入順序

綜合 先載入類 靜態欄位及靜態 塊 若有則執行主函式main 預設初始化域 執行構造方法 隱式初始化域和 塊,再執行構造器的主體 呼叫方法 4 執行子類的建構函式,建構函式來執行初始化。其中子類的建構函式 第一件事是呼叫基類的建構函式。第二件事是 隱式初始化域和 塊 接著才是執行構造器的主體。子類的...

java類的載入以及初始化順序

類的載入和初始化的了解對於我們對程式設計的理解有很大幫助,最近在看類的記載方面的問題。從網上查閱了若干文章,現總結如下 我們通過一段 來了解類載入和初始化的順序 package com.classloader.demo class insect private int p print insect....

java類的載入以及初始化順序

類的載入和初始化的了解對於我們對程式設計的理解有很大幫助,最近在看類的記載方面的問題。從網上查閱了若干文章,現總結如下 我們通過一段 來了解類載入和初始化的順序 package com.classloader.demo class insect private int p print insect....