Java子類實(shí)例化總是默認(rèn)調(diào)用父類的無(wú)參構(gòu)造操作
子類實(shí)例化時(shí),默認(rèn)調(diào)用父類的無(wú)參構(gòu)造方法(不管子類的構(gòu)造器有沒(méi)有參數(shù),因?yàn)樽宇惱^承的是父類的屬性和方法,只調(diào)用父類的無(wú)參構(gòu)造器就可以繼承父類的屬性和方法,因此不會(huì)調(diào)用父類的有參構(gòu)造器),再調(diào)用子類的有參/無(wú)參構(gòu)造器。
示例:
package classTest;class Father { public Father(){ System.out.println('父類的無(wú)參構(gòu)造方法'); } public Father(int a ) { System.err.println('父類的有參構(gòu)造方法'+a); } }class Son extends Father{ public Son() { System.out.println('子類中的無(wú)參構(gòu)造方法'); } public Son(int a ) { System.out.println('子類中的有參構(gòu)造方法'+a); } }public class TestExecute { public static void main(String[] args) { Son s = new Son(); System.out.println('---------------'); Son a = new Son(5); }}
結(jié)果:
父類的無(wú)參構(gòu)造方法
子類中的無(wú)參構(gòu)造方法
---------------
父類的無(wú)參構(gòu)造方法
子類中的有參構(gòu)造方法5
補(bǔ)充知識(shí):JAVA父類和子類的構(gòu)造函數(shù)之間的關(guān)系
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
class SuperClass { private int n; SuperClass(){ //父類的無(wú)參構(gòu)造器 System.out.println('SuperClass()'); } SuperClass(int n) { //父類的帶參構(gòu)造器 System.out.println('SuperClass(int n)'); this.n = n; }}class SubClass extends SuperClass{ private int n; SubClass(){ //子類的無(wú)參構(gòu)造器 super(300);//調(diào)用父類的帶參構(gòu)造器,super(300)相當(dāng)于SuperClass(300) System.out.println('SubClass'); } public SubClass(int n){ //子類的帶參構(gòu)造器 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); }}
這個(gè)實(shí)例的輸出結(jié)果是:
SuperClass(int n)SubClassSuperClass()SubClass(int n):200
從這個(gè)實(shí)例得到的結(jié)果是(個(gè)人見解):子類在構(gòu)造時(shí),會(huì)根據(jù)主函數(shù)中是否傳入?yún)?shù)來(lái)選擇使用無(wú)參構(gòu)造器 or帶參構(gòu)造器,在這個(gè)實(shí)例中:
當(dāng)子類調(diào)用的是無(wú)參構(gòu)造器時(shí),若父類的構(gòu)造器是帶有參數(shù)的,則必須在子類的構(gòu)造器中顯式地通過(guò)super關(guān)鍵字調(diào)用父類的構(gòu)造器并配以適當(dāng)?shù)膮?shù)列表。
當(dāng)子類調(diào)用的是帶參構(gòu)造器時(shí),則在子類的構(gòu)造器中用super調(diào)用父類構(gòu)造器不是必須的,如果沒(méi)有使用super關(guān)鍵字,系統(tǒng)會(huì)自動(dòng)調(diào)用父類的無(wú)參構(gòu)造器。
以上這篇Java子類實(shí)例化總是默認(rèn)調(diào)用父類的無(wú)參構(gòu)造操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問(wèn)題及解決2. python爬蟲實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊3. 如何在jsp界面中插入圖片4. 詳解盒子端CSS動(dòng)畫性能提升5. HTML 絕對(duì)路徑與相對(duì)路徑概念詳細(xì)6. asp批量添加修改刪除操作示例代碼7. .NET6打包部署到Windows Service的全過(guò)程8. Ajax返回值類型與用法實(shí)例分析9. 解決ajax請(qǐng)求后臺(tái),有時(shí)收不到返回值的問(wèn)題10. ajax請(qǐng)求后臺(tái)得到j(luò)son數(shù)據(jù)后動(dòng)態(tài)生成樹形下拉框的方法
