乙個類要建立例項需要先載入並初始化該類
- main方法所在的類需要先載入和初始化
乙個子類要初始化需要先初始化父類
乙個類初始化就是執行clinit()方法
- clinit()方法由靜態類變數顯式賦值**和靜態**塊組成
- 類變數顯式賦值**和靜態**塊**從上到下順序執行
- clinit()方法只執行一次
/*
父類的初始化(1)j=method();靜態類變數顯式賦值**
(2)父類的靜態**塊
*/public
class
father
father()
public
inttest()
public
static
intmethod()
}
/*
子類的初始化(1)j=method();靜態類變數顯式賦值**
(2)子類的靜態**塊
先初始化父類:(5)(1)
初始化子類:(10)(6)
*/public
class
sonextends
father
son(
)public
inttest()
public
static
intmethod()
public
static
void
main
(string[
] args)
}//執行結果:(5)(1)(10)(6)
例項初始化就是執行init()方法
public
static
void
main
(string[
] args)
/*執行結果:
(5)(1)(10)(6)(9)(3)(2)(9)(8)(7)
(9)(3)(2)(9)(8)(7)
*/
類初始化和例項初始化
father public class father father public inttest public static intmethod son public class sonextends father son public inttest public static intmethod...
類初始化和例項初始化過程
類初始化過程 乙個類要建立例項需要先載入並初始化該類 main方法所在的類需要先載入和初始化 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行 方法 由靜態類變數賦值 和靜態 塊組成 靜態類變數賦值 和靜態 塊從上往下執行 方法只執行一次 例項初始化過程 例項初始化就是執行 方法 方法可能過載...
靜態初始化和例項初始化
父類單獨的效果 當父類單獨執行時,靜態初始化塊優先執行,然後是例項初始化塊,最後才是構造器 子類單獨效果 首先執行父類的靜態初始化塊和子類的初始化塊 優先執行靜態 然後執行父類的例項初始化塊和構造器,最後執行子類的例項初始化塊和構造器 父類子類效果1 父在前子在後 先將父類的物件例項出來後,進行子類...