excel函數(shù)公式大全 創(chuàng)建子類對象時,子類和父類的構造函數(shù)執(zhí)行順序是什么?
創(chuàng)建子類對象時,子類和父類的構造函數(shù)執(zhí)行順序是什么?繼承時,構造函數(shù)的調用順序:1。如果繼承虛擬基類,則首先調用虛擬基類的構造函數(shù)。如果有多個虛擬基類,請按順序調用它們。2. 如果基類是繼承的,則調用
創(chuàng)建子類對象時,子類和父類的構造函數(shù)執(zhí)行順序是什么?
繼承時,構造函數(shù)的調用順序:
1。如果繼承虛擬基類,則首先調用虛擬基類的構造函數(shù)。如果有多個虛擬基類,請按順序調用它們。
2. 如果基類是繼承的,則調用基類的構造函數(shù);如果有多個基類,則按順序調用它們。
3. 如果在類中定義了成員對象,則調用成員對象的構造函數(shù);如果有多個成員對象,則按成員對象定義的順序調用它們;
4,調用它們自己的構造函數(shù);
析構函數(shù)的調用順序相反。
父類中有構造函數(shù)子類繼承時必須定義子類的構造方法嗎?
這取決于具體情況。
1。如果父類沒有定義參數(shù)化構造函數(shù)(或者有參數(shù)化構造方法,但沒有參數(shù)化構造方法),則子類不需要顯式定義構造方法。
2. 如果父類顯式定義了一個參數(shù)構造函數(shù),而沒有顯示無參數(shù)構造函數(shù),則子類必須顯式定義一個參數(shù)構造函數(shù),并使用super(XX)在構造函數(shù)中顯式調用父類的參數(shù)構造函數(shù)
不創(chuàng)建父類對象,但調用父類類的構造函數(shù)。構造函數(shù)只是一個成員方法,沒有什么特別之處。
如果查看字節(jié)碼,新建和調用構造函數(shù)是兩個步驟。Java create object是new,call constructor是invokespecial<init>。這里還可以看到,在調用構造函數(shù)時,您已經(jīng)有了一個對象(new),因此調用構造函數(shù)并不意味著創(chuàng)建一個新對象。
很多人誤解了這一點。還有這個。轉到其他對象。但是,如果您查看字節(jié)碼,它們實際上是對象的引用,但是類的名稱不同。說白了,字節(jié)碼中沒有this和super關鍵字。如果是成員方法,則需要使用this或super,兩者都是0。
當然,這只是一個字節(jié)碼,與真正的虛擬機執(zhí)行的最終代碼不同,但邏輯是這樣的,這并不妨礙我們理解它是如何工作的。
我讀了其他朋友的答案。如果您想根據(jù)父類對象的創(chuàng)建來理解它,沒有大問題。從邏輯上講,我們可以認為那里有一個父類對象,并且內存中有父類的成員。