關(guān)于JAVA構(gòu)造器的使用問題?
問題描述
class SuperClass { private int n; SuperClass(){ System.out.println('SuperClass()'); } SuperClass(int n) { System.out.println('SuperClass(int n)'); this.n = n; }}class SubClass extends SuperClass{ private int n; SubClass(){ super(300); System.out.println('SubClass'); } public SubClass(int n){ System.out.println('SubClass(int n):'+n); this.n = n; }}public class TestSuperSub{ public static void main (String args[]){ SubClass sc = new SubClass(); SubClass sc2 = new SubClass(200); }}
請問為什么說:1.子類不能繼承父類的構(gòu)造器(構(gòu)造方法或者構(gòu)造函數(shù)),但是父類的構(gòu)造器帶有參數(shù)的,則必須在子類的構(gòu)造器中顯式地通過super關(guān)鍵字調(diào)用父類的構(gòu)造器并配以適當(dāng)?shù)膮?shù)列表。該案例中,(1)子類SubClass已經(jīng)繼承了父類SuperClass,里面的構(gòu)造器不是已經(jīng)發(fā)生繼承了?么?(2)該處子類SubClass的SubClass()方法是重寫的還是繼承的哈?這里應(yīng)該是無常的構(gòu)造器哈,怎么也有super(300)?。抗蚯笾附坦?!
問題解答
回答1:子類不能繼承父類的構(gòu)造器。子類在實(shí)例化之前會先實(shí)例化父類。
SubClass()就是默認(rèn)構(gòu)造器,不是重寫也不是繼承。super(300)是你自己寫的,SubClass(int n)里就默認(rèn)調(diào)用了super()。
相關(guān)文章:
1. javascript - immutable配合react提升性能?2. javascript - sublime快鍵鍵問題3. javascript - nodejs關(guān)于進(jìn)程間發(fā)送句柄的一點(diǎn)疑問4. javascript - 移動端上不能實(shí)現(xiàn)拖拽布局嗎?5. 實(shí)現(xiàn)bing搜索工具urlAPI提交6. Apache 已經(jīng)把網(wǎng)站根目錄的改為allow from all了,但是服務(wù)器還是不能訪問?7. css - 寫頁面遇到個布局問題,求大佬們幫解答,在線等,急!~8. phpstudy8.1支持win11系統(tǒng)嗎?9. 配置Apache時,添加對PHP的支持時語法錯誤10. vue.js - Vue 如何像Angular.js watch 一樣監(jiān)聽數(shù)據(jù)變化

網(wǎng)公網(wǎng)安備