Java子類(lèi)實(shí)例化總是默認(rèn)調(diào)用父類(lèi)的無(wú)參構(gòu)造操作
子類(lèi)實(shí)例化時(shí),默認(rèn)調(diào)用父類(lèi)的無(wú)參構(gòu)造方法(不管子類(lèi)的構(gòu)造器有沒(méi)有參數(shù),因?yàn)樽宇?lèi)繼承的是父類(lèi)的屬性和方法,只調(diào)用父類(lèi)的無(wú)參構(gòu)造器就可以繼承父類(lèi)的屬性和方法,因此不會(huì)調(diào)用父類(lèi)的有參構(gòu)造器),再調(diào)用子類(lèi)的有參/無(wú)參構(gòu)造器。
示例:
package classTest; class Father { public Father(){ System.out.println("父類(lèi)的無(wú)參構(gòu)造方法"); } public Father(int a ) { System.err.println("父類(lèi)的有參構(gòu)造方法"+a); } } class Son extends Father{ public Son() { System.out.println("子類(lèi)中的無(wú)參構(gòu)造方法"); } public Son(int a ) { System.out.println("子類(lèi)中的有參構(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é)果:
父類(lèi)的無(wú)參構(gòu)造方法
子類(lèi)中的無(wú)參構(gòu)造方法
---------------
父類(lèi)的無(wú)參構(gòu)造方法
子類(lèi)中的有參構(gòu)造方法5
補(bǔ)充知識(shí):JAVA父類(lèi)和子類(lèi)的構(gòu)造函數(shù)之間的關(guān)系
我就廢話(huà)不多說(shuō)了,大家還是直接看代碼吧~
class SuperClass { private int n; SuperClass(){ //父類(lèi)的無(wú)參構(gòu)造器 System.out.println("SuperClass()"); } SuperClass(int n) { //父類(lèi)的帶參構(gòu)造器 System.out.println("SuperClass(int n)"); this.n = n; } } class SubClass extends SuperClass{ private int n; SubClass(){ //子類(lèi)的無(wú)參構(gòu)造器 super(300);//調(diào)用父類(lèi)的帶參構(gòu)造器,super(300)相當(dāng)于SuperClass(300) System.out.println("SubClass"); } public SubClass(int n){ //子類(lèi)的帶參構(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) SubClass SuperClass() SubClass(int n):200
從這個(gè)實(shí)例得到的結(jié)果是(個(gè)人見(jiàn)解):子類(lèi)在構(gòu)造時(shí),會(huì)根據(jù)主函數(shù)中是否傳入?yún)?shù)來(lái)選擇使用無(wú)參構(gòu)造器 or帶參構(gòu)造器,在這個(gè)實(shí)例中:
當(dāng)子類(lèi)調(diào)用的是無(wú)參構(gòu)造器時(shí),若父類(lèi)的構(gòu)造器是帶有參數(shù)的,則必須在子類(lèi)的構(gòu)造器中顯式地通過(guò)super關(guān)鍵字調(diào)用父類(lèi)的構(gòu)造器并配以適當(dāng)?shù)膮?shù)列表。
當(dāng)子類(lèi)調(diào)用的是帶參構(gòu)造器時(shí),則在子類(lèi)的構(gòu)造器中用super調(diào)用父類(lèi)構(gòu)造器不是必須的,如果沒(méi)有使用super關(guān)鍵字,系統(tǒng)會(huì)自動(dòng)調(diào)用父類(lèi)的無(wú)參構(gòu)造器。
以上這篇Java子類(lèi)實(shí)例化總是默認(rèn)調(diào)用父類(lèi)的無(wú)參構(gòu)造操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 關(guān)于Java繼承中父類(lèi)和子類(lèi)構(gòu)造函數(shù)的問(wèn)題
- java 父類(lèi)子類(lèi)有同名方法時(shí)如何調(diào)用的實(shí)現(xiàn)
- JAVA 多態(tài)操作----父類(lèi)與子類(lèi)轉(zhuǎn)換問(wèn)題實(shí)例分析
- Java中父類(lèi)和子類(lèi)之間的轉(zhuǎn)換操作示例
- java判斷class子類(lèi)或父類(lèi)的實(shí)例方法
- java子類(lèi)調(diào)用父類(lèi)的方法中包含子類(lèi)重寫(xiě)的實(shí)例方法
- java創(chuàng)建子類(lèi)對(duì)象設(shè)置并調(diào)用父類(lèi)的變量操作
相關(guān)文章
SpringBoot解決數(shù)據(jù)庫(kù)時(shí)間和返回時(shí)間格式不一致的問(wèn)題
這篇文章主要介紹了SpringBoot解決數(shù)據(jù)庫(kù)時(shí)間和返回時(shí)間格式不一致的問(wèn)題,文章通過(guò)代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)和工作有一定的幫助,需要的朋友可以參考下2024-03-03Spring Boot+Drools規(guī)則引擎整合詳解
本篇文章主要介紹了Spring Boot+Drools規(guī)則引擎整合,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09springboot-rabbitmq-reply?消息直接回復(fù)模式詳情
這篇文章主要介紹了springboot-rabbitmq-reply消息直接回復(fù)模式詳情,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-09-09深入淺出的學(xué)習(xí)Java ThreadLocal
本文會(huì)基于實(shí)際場(chǎng)景介紹ThreadLocal如何使用以及內(nèi)部實(shí)現(xiàn)機(jī)制。 具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02springboot后端存儲(chǔ)富文本內(nèi)容的思路與步驟(含圖片內(nèi)容)
在所有的編輯器中,大概最受歡迎的就是富文本編輯器和MarkDown編輯器了,下面這篇文章主要給大家介紹了關(guān)于springboot后端存儲(chǔ)富文本內(nèi)容的思路與步驟的相關(guān)資料,需要的朋友可以參考下2023-04-04詳解springboot + profile(不同環(huán)境讀取不同配置)
本篇文章主要介紹了springboot + profile(不同環(huán)境讀取不同配置),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Java實(shí)現(xiàn)計(jì)算器設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)計(jì)算器設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07