new SubClass;
(1)
類型為SubClass的一個對象首次創(chuàng)建時,或者SubClass類的static 方法/static 字段首次訪問時,Java 解釋器
必須找到SubClass.class(在事先設(shè)好的類路徑里搜索)。
(2)
找到SubClass.class 后(它會創(chuàng)建一個Class 對象),它的所有static 初始化模塊都會運(yùn)
行。因此,static 初始化僅發(fā)生一次——在Class 對象首次載入的時候。
(3)
創(chuàng)建一個new SubClass()時,SubClass對象的構(gòu)建進(jìn)程首先會在內(nèi)存堆(Heap)里為一個SubClass 對象分配足夠多的存
儲空間。
(4)
這種存儲空間會清為零,將SubClass中的所有基本類型設(shè)為它們的默認(rèn)值(零用于數(shù)字,以及boolean 和
char
的等價設(shè)定)。
(5) 調(diào)用基礎(chǔ)類構(gòu)建器。這個步驟會不斷重復(fù)下去,首先得到構(gòu)建的是分級結(jié)構(gòu)的根部,然后是下一個衍生類,等等。直到抵達(dá)最深一層的衍生類SubClass。
(6) 按聲明順序調(diào)用成員初始化模塊。
(7) 調(diào)用衍生構(gòu)建器的主體。