java子類調(diào)用父類方法 為什么子類的構(gòu)造方法要調(diào)用父類的構(gòu)造方法?
為什么子類的構(gòu)造方法要調(diào)用父類的構(gòu)造方法?子類構(gòu)造方法的第一句必須調(diào)用父類的構(gòu)造方法。子類不能繼承父類的構(gòu)造方法?不~~,但至少應(yīng)該調(diào)用一個(gè)!也可以叫所有人!任何類都有構(gòu)造函數(shù)!如果您不自己編寫,系統(tǒng)
為什么子類的構(gòu)造方法要調(diào)用父類的構(gòu)造方法?
子類構(gòu)造方法的第一句必須調(diào)用父類的構(gòu)造方法。子類不能繼承父類的構(gòu)造方法?
不~~,但至少應(yīng)該調(diào)用一個(gè)!也可以叫所有人!任何類都有構(gòu)造函數(shù)!如果您不自己編寫,系統(tǒng)將為您添加一個(gè)沒(méi)有參數(shù)的默認(rèn)構(gòu)造函數(shù)。如果你自己寫的話,系統(tǒng)就不會(huì)把它添加到你身上!因?yàn)槔^承就是把父類的東西拿給自己,并在此基礎(chǔ)上擴(kuò)展自己!當(dāng)子類調(diào)用構(gòu)造函數(shù)時(shí),它不知道父類有什么,所以我們需要調(diào)用父類的構(gòu)造函數(shù)!如果父類沒(méi)有編寫自己的構(gòu)造函數(shù),當(dāng)您在子類中調(diào)用構(gòu)造函數(shù)而沒(méi)有編寫super時(shí)~~系統(tǒng)將調(diào)用父類的默認(rèn)構(gòu)造函數(shù)!您還可以編寫要調(diào)用的父類的構(gòu)造函數(shù)!該關(guān)燈了~~~歡迎留言繼續(xù)交流
關(guān)于java中子類繼承父類的構(gòu)造方法?
你的老師是對(duì)的,但我說(shuō)不清楚。我舉個(gè)例子。類a{public a(){}//1:無(wú)參數(shù)構(gòu)造方法。Public a(string s){}//2.}類B擴(kuò)展了a{Public B(string s){super(s)//3.}注意:如果位置1中沒(méi)有無(wú)參數(shù)構(gòu)造方法,則必須在位置3中主動(dòng)調(diào)用具有父類參數(shù)的構(gòu)造方法。如果有一個(gè)構(gòu)造方法,那么這三個(gè)代碼可以省略,因?yàn)槟J(rèn)情況下Java會(huì)自動(dòng)調(diào)用父類的無(wú)參數(shù)構(gòu)造方法。請(qǐng)記住,在構(gòu)造子類時(shí),必須調(diào)用父類的構(gòu)造函數(shù)。所以父類或者有一個(gè)默認(rèn)的無(wú)參數(shù)構(gòu)造,所以Java會(huì)自動(dòng)調(diào)用這個(gè)無(wú)參數(shù)構(gòu)造。如果父類沒(méi)有無(wú)參數(shù)構(gòu)造,則需要在子類的構(gòu)造中通過(guò)super()調(diào)用父類的構(gòu)造。
調(diào)用子類構(gòu)造方法時(shí)為什么先要調(diào)用父類構(gòu)造方法?
個(gè)人理解,因?yàn)樽宇惱^承父類,所以它同時(shí)繼承父類的一些特性。因此,子類類實(shí)際上被理解為用父類的內(nèi)容創(chuàng)建子類實(shí)例。當(dāng)然,在進(jìn)一步構(gòu)造子類方法之前,它們中會(huì)有父類的屬性和方法。
子類會(huì)執(zhí)行父類構(gòu)造函數(shù)的方法么?
在Java中,在構(gòu)建子類的過(guò)程中,必須調(diào)用其父類的構(gòu)造函數(shù),因此子類對(duì)象比父類對(duì)象大,子類對(duì)象包含父類的對(duì)象,這是內(nèi)存中的真實(shí)情況。當(dāng)構(gòu)造方法要?jiǎng)?chuàng)建新對(duì)象時(shí),它必須調(diào)用該方法。這是一個(gè)規(guī)則,如果你想創(chuàng)建一個(gè)新的父類對(duì)象,你必須調(diào)用它的構(gòu)造方法,所以第一個(gè)規(guī)則:子類構(gòu)造在制造過(guò)程中,我們必須調(diào)用它的父類的構(gòu)造函數(shù)。如果我們不編寫構(gòu)造函數(shù),編譯器將為我們添加一個(gè)默認(rèn)構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)是沒(méi)有參數(shù)的構(gòu)造函數(shù)。但是,如果您自己編寫構(gòu)造函數(shù),編譯器將不會(huì)向您添加它。所以有時(shí)候新建一個(gè)子類對(duì)象時(shí),肯定會(huì)調(diào)用子類的構(gòu)造方法,但是在子類構(gòu)造方法中,我們不調(diào)用基類的構(gòu)造方法,基類的構(gòu)造方法是沒(méi)有寫的,比如super()這是不對(duì)的,但第二條規(guī)則是,如果子類的構(gòu)造函數(shù)沒(méi)有顯示調(diào)用基類構(gòu)造函數(shù)的方法,則系統(tǒng)將默認(rèn)不帶參數(shù)地調(diào)用基類的構(gòu)造函數(shù)。注意:如果子類的構(gòu)造函數(shù)沒(méi)有顯示調(diào)用基類構(gòu)造函數(shù)的方法,而基類的構(gòu)造函數(shù)沒(méi)有顯示調(diào)用基類構(gòu)造函數(shù)的方法,則會(huì)發(fā)生編譯錯(cuò)誤。因此,我們通常需要顯示:Super(parameter list),調(diào)用父類有一個(gè)參數(shù)構(gòu)造函數(shù)??次业钠聊唬?tīng)我的演講!