創(chuàng)建派生類(lèi)對(duì)象時(shí),構(gòu)造函數(shù)的執(zhí)行順序是:基類(lèi)構(gòu)造函數(shù)、派生類(lèi)對(duì)象成員構(gòu)造函數(shù)、派生類(lèi)本身的構(gòu)造函數(shù)。對(duì)象創(chuàng)建時(shí),代碼的加載順序是:靜態(tài)代碼、非靜態(tài)代碼、構(gòu)造方法。
創(chuàng)建派生類(lèi)對(duì)象時(shí),構(gòu)造函數(shù)的執(zhí)行順序是:基類(lèi)構(gòu)造函數(shù),派生類(lèi)對(duì)象成員構(gòu)造函數(shù),派生類(lèi)本身的構(gòu)造函數(shù)。
(推薦教程:java入門(mén)程序)
詳細(xì)介紹:
對(duì)象創(chuàng)建時(shí)代碼的加載順序?yàn)椋红o態(tài)代碼 –> 非靜態(tài)代碼 –> 構(gòu)造方法。
若繼承了父類(lèi),則加載順序?yàn)椋焊割?lèi)的靜態(tài)的代碼 –> 子類(lèi)的靜態(tài)的代碼 –> 父類(lèi)內(nèi)部非靜態(tài)代碼 –> 父類(lèi)的構(gòu)造方法 –> 子類(lèi)的非靜態(tài)代碼 –> 子類(lèi)的構(gòu)造方法。
其中,靜態(tài)代碼包括(靜態(tài)方法,靜態(tài)變量,靜態(tài)代碼塊等),非靜態(tài)代碼即(成員方法,成員變量,成員代碼塊等),同一種代碼,寫(xiě)在上面的先加載。
(視頻教程推薦:java視頻教程)
實(shí)例:
public class ExtendsTest { public static void main(String[] args) { // TODO Auto-generated method stub C c = new D(); } } class C { static { System.out.println("C 基類(lèi)靜態(tài)域 "); } { System.out.println("C 基類(lèi)對(duì)象成員構(gòu)造函數(shù)"); } public C() { System.out.println("C 基類(lèi)本身的構(gòu)造函數(shù)"); } } class D extends C { static { System.out.println("D 派生類(lèi)靜態(tài)域"); } { System.out.println("D 派生類(lèi)對(duì)象成員構(gòu)造函數(shù)"); } public D() { System.out.println("D 派生類(lèi)本身的構(gòu)造函數(shù)"); } }
輸出結(jié)果: