關(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)造器。子類在實例化之前會先實例化父類。
SubClass()就是默認(rèn)構(gòu)造器,不是重寫也不是繼承。super(300)是你自己寫的,SubClass(int n)里就默認(rèn)調(diào)用了super()。
相關(guān)文章:
1. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.2. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題3. 刷新頁面出現(xiàn)彈框4. javascript - 編程,算法的問題5. javascript - 怎么看網(wǎng)站用了什么技術(shù)框架?6. mysql - 用PHPEXCEL將excel文件導(dǎo)入數(shù)據(jù)庫數(shù)據(jù)5000+條,本地數(shù)據(jù)庫正常,線上只導(dǎo)入15條,沒有報錯,哪里的問題?7. javascript - 請教空白文本節(jié)點的問題8. PC 手機兼容的 編輯器9. 關(guān)于Android權(quán)限的獲取問題,大家遇到過這樣的情況嘛?10. css - 關(guān)于border-image
