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();
}
}
程序運行圖解如下所示: