程式碼說事 之 建立java物件的初始化順序
package util;
/**
* 類初始化順序:
*父類靜態程式碼塊--->子類靜態程式碼塊--->父類程式碼塊--->父類構造方法--->子類
*程式碼塊--->子類構造方法
*1. 父類靜態成員和靜態初始化塊 ,按在程式碼中出現的順序依次執行
*2. 子類靜態成員和靜態初始化塊 ,按在程式碼中出現的順序依次執行
*2. 父類例項成員和例項初始化塊 ,按在程式碼中出現的順序依次執行
*4. 父類構造方法
*5. 子類例項成員和例項初始化塊 ,按在程式碼中出現的順序依次執行
*6. 子類構造方法
* @author zhiziwei
*
*/
public class ObjectInit {
public ObjectInit(){
System.out.println("ObjectInit構造方法");
}
public static void main(String[] arg0){
new B();
System.out.println("----------------------------");
new B();
}
}
class A{
//static ObjectInit oi = new ObjectInit();//此時,“ObjectInit
//構造方法”輸出在"A static 程式碼塊"上邊
static{
System.out.println("A static 程式碼塊");
}//只執行一次
static ObjectInit oi = new ObjectInit();//此時,“ObjectInit構
//造方法”輸出在"A static 程式碼塊"下邊
protected String s = "先於父類程式碼塊宣告並初始化";
{
System.out.println("A 程式碼塊");
System.out.println("A 例項變數s輸出:"+s);
}//物件被建立幾次,執行幾次
public A(){
System.out.println("A 構造方法");
}
}
class B extends A{
static {
System.out.println("B static 程式碼塊");
}
{
System.out.println("B 程式碼塊");
}
public B(){
System.out.println("B 構造方法");
}
}
輸出結果:
A static 程式碼塊
ObjectInit構造方法
B static 程式碼塊
A 程式碼塊
A 例項變數s輸出:先於父類程式碼塊宣告並初始化
A 構造方法
B 程式碼塊
B 構造方法
----------------------------
A 程式碼塊
A 例項變數s輸出:先於父類程式碼塊宣告並初始化
A 構造方法
B 程式碼塊
B 構造方法
相關文章
- JAVA物件的初始化順序Java物件
- 九、 Java程式初始化的順序(二)Java
- Java初始化順序Java
- c#物件初始化順序C#物件
- java類初始化的順序Java
- Java 類初始化順序Java
- Java類初始化順序Java
- Java中class的初始化順序Java
- 關於java的初始化順序Java
- Java類(繼承)初始化順序Java繼承
- C++和C#物件初始化順序C++C#物件
- 總結類初始化時的程式碼執行順序
- static程式碼塊、構造程式碼塊、建構函式以及Java類初始化順序C程式函式Java
- Java教室: Garbage Collection 清除物件的順序 (轉)Java物件
- java類內部程式碼執行順序Java
- 淺談Java類中的變數初始化順序Java變數
- Java初始化靜態變數的時間順序Java變數
- 建立派生類物件,建構函式的執行順序物件函式
- Java子類和父類的初始化執行順序Java
- Java之執行緒的優先順序Java執行緒
- Java中,類與類,類中的程式碼執行順序Java
- js物件遍歷順序JS物件
- Linux核心驅動程式初始化順序的調整(轉)Linux
- SQLServer 物件建立注意事項之dboSQLServer物件
- c#類的成員初始化順序C#
- Java中建構函式、靜態程式碼塊、程式碼塊的執行順序Java函式
- promise、async和await之執行順序的那點事PromiseAI
- 類的成員變數的初始化順序變數
- Java static變數、作用域、建構函式初始化順序Java變數函式
- 夯實Java基礎系列7:Java 程式碼塊和執行順序Java
- Go包中程式碼執行順序Go
- Java事務註解:讓你的程式碼如絲般順滑Java
- javascript獲取元素的順序程式碼例項JavaScript
- Java普通程式碼塊,構造程式碼塊,靜態程式碼塊區別,執行順序的程式碼例項Java
- 面試題解析001:Java物件建立及初始化面試題Java物件
- 【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現資料結構Java
- JavaScript遍歷物件屬性順序JavaScript物件
- Oracle對於物件名的解釋順序Oracle物件