1. 程式人生 > >Java父類子類載入構造程式碼塊

Java父類子類載入構造程式碼塊

class Test2_Extends{ //主函式
public static void main(String[] args){
Zi z=new Zi(); //建立物件
}
}
/*
1.jvm呼叫main方法,main進棧;
2.遇到Zi z=new Zi(),先將父類、子類分別載入進記憶體,再建立物件;
3.父類進入記憶體,靜態程式碼塊會載入,子類進入記憶體,子類靜態程式碼塊會載入;
4.子類構造方法,java分層初始化。先初始化父類,再初始化子類,所以先走父類構造,但在執行父類構造時,發現父類有構造程式碼塊,構造程式碼塊優先於構造方法執行
5.故而輸出構造程式碼塊父,然後構造方法父
6.父類初始化結束,子類初始化,先程式碼塊,後構造方法
*/

class Fu { //父類
static{
System.out.println(“靜態程式碼塊Fu”);
}
{
System.out.println(“構造程式碼塊Fu”);
}

public Fu(){
	System.out.println("構造方法Fu");
}

}

class Zi extends Fu{ //子類
static{
System.out.println(“靜態程式碼塊Zi”);
}
{
System.out.println(“構造程式碼塊Zi”);
}

public Fu(){
	System.out.println("構造方法Zi");
}

}