子類的實例化過程

一個對象實例化過程:
Person p = new Person();
1,JVM會讀取指定的路徑下的Person.class文件,並加載進內存,
並會先加載Person的父類(如果有直接的父類的情況下).
2,在堆內存中的開闢空間,分配地址。
3,並在對象空間中,對對象中的屬性進行默認初始化。
4,調用對應的構造函數進行初始化。
5,在構造函數中,第一行會先到調用父類中構造函數進行初始化。

6,父類初始化完畢後,在對子類的屬性進行顯示初始化。

7,調用構造代碼塊,進行對象的初始化。

8,繼續進行子類構造函數的特定初始化。

9,初始化完畢後,將地址值賦值給引用變量。

class Fu
{
	Fu(){
		System.out.println("fu contructor run");
		show();
	}
	void show(){
		System.out.println("fu show...");
	}
}
class Zi extends Fu
{
	int num = 9;
	{
		System.out.println("contructor code run "+num);
		num = 10;
	}
	Zi(){
		super();
		System.out.println("zi contructor run "+num);
	}
	void show(){
		System.out.println("zi show..."+num);
	}
}
class ExtendsDemo4 
{
	public static void main(String[] args) 
	{
		new Zi();
	}
}

程序運行圖解如下所示:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章