Java中new DerivedClass()時背后發(fā)生的事情
class DerivedClass extends BaseClass {…}
new DerivedClass();
1 裝載class
1.1 載入BaseClass , 產(chǎn)生了此處說明的序列步驟(即: [裝載class])的遞歸.
1.2 載入DerivedClass
1.2.1 為類作用域變量分配存儲空間,并賦默認值
1.2.2 調(diào)用,這包括:
a).聲明類作用域變量并同時賦值的語句
b).包含在 static {…} 中的賦值語句以及其他任何合法語句.
c).要說明的是: 以上賦值語句的右值也可以是函數(shù)調(diào)用,那是合法的.
2 為實例作用域變量分配存儲空間,并賦默認值.
3 調(diào)用構(gòu)造函數(shù)
***注意: Java規(guī)定:構(gòu)造函數(shù)的第一個條語句必須是對super構(gòu)造函數(shù)的調(diào)用,如果代碼中不是這樣,會由編譯器自動為其偷偷加上.
3.1調(diào)用super構(gòu)造函數(shù), 產(chǎn)生了此處說明的序列步驟(即: [調(diào)用構(gòu)造函數(shù)])的遞歸.
3.2調(diào)用,這包括:
a).聲明實例作用域變量并同時賦值的語句
b).包含在 {…} 中的賦值語句以及其他任何合法語句.
c).要說明的是: 以上賦值語句的右值也可以是函數(shù)調(diào)用,那是合法的.
3.3執(zhí)行構(gòu)造函數(shù)中的剩余部分.
class DerivedClass extends BaseClass {…}
new DerivedClass();
1 裝載class
1.1 載入BaseClass , 產(chǎn)生了此處說明的序列步驟(即: [裝載class])的遞歸.
1.2 載入DerivedClass
1.2.1 為類作用域變量分配存儲空間,并賦默認值
1.2.2 調(diào)用
a).聲明類作用域變量并同時賦值的語句
b).包含在 static {…} 中的賦值語句以及其他任何合法語句.
c).要說明的是: 以上賦值語句的右值也可以是函數(shù)調(diào)用,那是合法的.
2 為實例作用域變量分配存儲空間,并賦默認值.
3 調(diào)用構(gòu)造函數(shù)
***注意: Java規(guī)定:構(gòu)造函數(shù)的第一個條語句必須是對super構(gòu)造函數(shù)的調(diào)用,如果代碼中不是這樣,會由編譯器自動為其偷偷加上.
3.1調(diào)用super構(gòu)造函數(shù), 產(chǎn)生了此處說明的序列步驟(即: [調(diào)用構(gòu)造函數(shù)])的遞歸.
3.2調(diào)用
a).聲明實例作用域變量并同時賦值的語句
b).包含在 {…} 中的賦值語句以及其他任何合法語句.
c).要說明的是: 以上賦值語句的右值也可以是函數(shù)調(diào)用,那是合法的.
3.3執(zhí)行構(gòu)造函數(shù)中的剩余部分.