關(guān)于JAVA構(gòu)造器的使用問(wèn)題?
問(wèn)題描述
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); }}
請(qǐng)問(wèn)為什么說(shuō):1.子類不能繼承父類的構(gòu)造器(構(gòu)造方法或者構(gòu)造函數(shù)),但是父類的構(gòu)造器帶有參數(shù)的,則必須在子類的構(gòu)造器中顯式地通過(guò)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)該是無(wú)常的構(gòu)造器哈,怎么也有super(300)啊?跪求指教哈!!
問(wèn)題解答
回答1:子類不能繼承父類的構(gòu)造器。子類在實(shí)例化之前會(huì)先實(shí)例化父類。
SubClass()就是默認(rèn)構(gòu)造器,不是重寫也不是繼承。super(300)是你自己寫的,SubClass(int n)里就默認(rèn)調(diào)用了super()。
相關(guān)文章:
1. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語(yǔ)法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?2. mysql - 數(shù)據(jù)庫(kù)建字段,默認(rèn)值空和empty string有什么區(qū)別 1103. mysql - 這種分級(jí)一對(duì)多,且分級(jí)不平衡的模型該怎么設(shè)計(jì)表?4. Navicat for mysql 中以json格式儲(chǔ)存的數(shù)據(jù)存在大量反斜杠,如何去除?5. mac OSX10.12.4 (16E195)下Mysql 5.7.18找不到配置文件my.cnf6. mysql mysql_real_escape_string() 轉(zhuǎn)義問(wèn)題7. 新人求教MySQL關(guān)于判斷后拼接條件進(jìn)行查詢的sql語(yǔ)句8. mysql - 千萬(wàn)數(shù)據(jù) 分頁(yè),當(dāng)偏移量 原來(lái)越大時(shí),怎么優(yōu)化速度9. MySQL FOREIGN KEY 約束報(bào)錯(cuò)10. mysql - 數(shù)據(jù)庫(kù)表中,兩個(gè)表互為外鍵參考如何解決
