色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

關(guān)于Java繼承中父類和子類構(gòu)造函數(shù)的問題

瀏覽:4日期:2022-08-22 13:43:39

Java子類在實(shí)例化時(shí)默認(rèn)調(diào)用的是父類的無(wú)參構(gòu)造函數(shù),不論實(shí)例化時(shí)調(diào)用的是子類的有參還是無(wú)參構(gòu)造函數(shù),

可以參考這篇Java子類實(shí)例化總是默認(rèn)調(diào)用父類的無(wú)參構(gòu)造操作

1、當(dāng)父類沒有顯式定義構(gòu)造方法時(shí),

編輯器會(huì)默認(rèn)為此類添加一個(gè)隱式無(wú)參構(gòu)造函數(shù)。此時(shí)子類可以有自己的無(wú)參和有參構(gòu)造方法。不論實(shí)例化時(shí)調(diào)用的是子類的有參還是無(wú)參構(gòu)造函數(shù),默認(rèn)調(diào)用的是父類的無(wú)參構(gòu)造函數(shù)。

2、當(dāng)父類有顯式定義無(wú)參構(gòu)造方法時(shí),

此時(shí)子類也可以有自己的無(wú)參和有參構(gòu)造方法。類似于1,同樣默認(rèn)隱式調(diào)用父類的無(wú)參構(gòu)造方法。

3、當(dāng)父類只有顯式定義有參構(gòu)造方法時(shí),

(1)子類定義無(wú)參方法會(huì)出錯(cuò):Implicit super constructor Father() is undefined. Must explicitly invoke another constructor,即隱式父類構(gòu)造函數(shù)Father()未定義, 必須顯式調(diào)用另一個(gè)構(gòu)造函數(shù),當(dāng)此時(shí)調(diào)用父類的有參構(gòu)造函數(shù)時(shí),使用super(i),這里i是參數(shù),會(huì)提示i沒有定義,因?yàn)榇藭r(shí)是無(wú)參構(gòu)造函數(shù),此時(shí)要使子類也有無(wú)參構(gòu)造函數(shù),只能在子類的無(wú)參構(gòu)造函數(shù)中調(diào)用父類的有參構(gòu)造函數(shù),并給父類的有參構(gòu)造函數(shù)賦一個(gè)實(shí)參;

(2)在子類的有參構(gòu)造函數(shù)中使用super(i)調(diào)用父類的有參構(gòu)造函數(shù)不會(huì)出錯(cuò),因此若父類只有有參的構(gòu)造方法,子類也只能有有參的構(gòu)造方法,且子類的有參構(gòu)造方法必須顯示調(diào)用父類的有參構(gòu)造方法。

分析:默認(rèn)都是調(diào)用父類的無(wú)參構(gòu)造函數(shù),當(dāng)父類有有參構(gòu)造函數(shù)時(shí),編輯器不會(huì)為父類添加無(wú)參的構(gòu)造函數(shù),在子類繼承父類時(shí),本來(lái)是默認(rèn)在構(gòu)造函數(shù)第一行都是默認(rèn)有使用super()調(diào)用父類無(wú)參構(gòu)造函數(shù)的,現(xiàn)在父類沒有無(wú)參構(gòu)造函數(shù),因此提示顯示調(diào)用另一個(gè)構(gòu)造函數(shù)(即有參構(gòu)造函數(shù))。

提醒一點(diǎn),當(dāng)沒有子類繼承父類時(shí),父類只定義有參構(gòu)造函數(shù)是沒有問題的。

4、當(dāng)父類和子類都有無(wú)參和有參構(gòu)造方法時(shí),默認(rèn)是子類構(gòu)造方法都是調(diào)用父類的無(wú)參構(gòu)造方法的,但當(dāng)子類的有參構(gòu)造方法使用super(i)調(diào)用父類的有參構(gòu)造方法時(shí),帶參數(shù)實(shí)例化時(shí)就不再調(diào)用父類的無(wú)參構(gòu)造方法,而是調(diào)用父類的有參構(gòu)造方法,因?yàn)槭秋@示調(diào)用(人為強(qiáng)制的)。

總結(jié):

父類有無(wú)參構(gòu)造函數(shù)時(shí)(顯示或隱式),子類的有參和無(wú)參構(gòu)造函數(shù)都是默認(rèn)調(diào)用父類的無(wú)參構(gòu)造函數(shù);當(dāng)父類只有有參構(gòu)造函數(shù)時(shí),子類可以有有參和無(wú)參構(gòu)造函數(shù),子類有參構(gòu)造函數(shù)必須顯式調(diào)用父類的有參構(gòu)造函數(shù),子類無(wú)參構(gòu)造函數(shù)也必須顯式調(diào)用父類的有參構(gòu)造函數(shù),但需給父類有參構(gòu)造函數(shù)賦實(shí)參。

1中的示例:

package classTest;class Father1{}class Son1 extends Father1{ public Son1() { System.out.println('子類的無(wú)參構(gòu)造方法'); } public Son1(int i) { System.out.println('子類中有參構(gòu)造方法'+i); }}public class TestExtend {public static void main(String[] args) { Son1 s = new Son1();}}

運(yùn)行結(jié)果:

子類的無(wú)參構(gòu)造方法

2中的示例:

package classTest;class Father1{ public Father1() { }}class Son1 extends Father1{ public Son1() { System.out.println('子類的無(wú)參構(gòu)造方法'); } public Son1(int i) { System.out.println('子類中有參構(gòu)造方法'+i); }}public class TestExtend {public static void main(String[] args) { Son1 s = new Son1();}}

運(yùn)行結(jié)果:

子類的無(wú)參構(gòu)造方法

3中的示例(1):

package classTest;class Father1{ public Father1(int i) { System.out.println('父類中的有參構(gòu)造方法'+i); }}class Son1 extends Father1{ public Son1() { //下兩行需注釋掉一行 super(i);//此時(shí)會(huì)報(bào)錯(cuò) super(1);//此時(shí)不會(huì)報(bào)錯(cuò),調(diào)用父類構(gòu)造函數(shù),但參數(shù)值是固定的,不能在調(diào)用時(shí)傳入其他值。 System.out.println('子類的無(wú)參構(gòu)造方法'); } public Son1(int i) { super(i); System.out.println('子類中有參構(gòu)造方法'+i); }}public class TestExtend {public static void main(String[] args) { Son1 s = new Son1();}}

結(jié)果:顯示參數(shù)沒有定義

Exception in thread 'main' java.lang.Error: Unresolved compilation problem: i cannot be resolved to a variable

3中的示例(2):

package classTest;class Father1{ public Father1(int i) { System.out.println('父類中的有參構(gòu)造方法'+i); }}class Son1 extends Father1{ public Son1(int i) { super(i); System.out.println('子類中有參構(gòu)造方法'+i); }}public class TestExtend {public static void main(String[] args) { System.out.println('-----'); Son1 a = new Son1(5);}}

結(jié)果:

-----

父類中的有參構(gòu)造方法5

子類中有參構(gòu)造方法5

4中的示例:

package classTest;class Father1{ public Father1() { System.out.println('父類的無(wú)參構(gòu)造方法');} public Father1(int i) { System.out.println('父類中的有參構(gòu)造方法'+i); }}class Son1 extends Father1{ public Son1() { System.out.println('子類的無(wú)參構(gòu)造方法'); } public Son1(int i) { super(i); System.out.println('子類中有參構(gòu)造方法'+i); }}public class TestExtend {public static void main(String[] args) { Son1 s = new Son1(); System.out.println('-----'); Son1 a = new Son1(5);}}

結(jié)果:

父類的無(wú)參構(gòu)造方法

子類的無(wú)參構(gòu)造方法

-----

父類中的有參構(gòu)造方法5

子類中有參構(gòu)造方法5

以上這篇關(guān)于Java繼承中父類和子類構(gòu)造函數(shù)的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 亚洲系列中文字幕一区二区 | 亚洲在线视频播放 | 亚洲一级大片 | 国产美女做爰免费视频网址 | 国产亚洲精品网站 | 三级亚洲 | 操出白浆视频 | 欧美一区二区三区在线播放 | 国产欧美日韩图片一区二区 | 亚洲在线中文 | 免费观看一级成人毛片 | 国产成人精品久久 | 国产精品久久久久久久午夜片 | 国产日韩一区二区三区在线播放 | 国产成人久久精品麻豆二区 | 亚洲综合一 | 免费被黄网站在观看 | 亚洲免费精品视频 | 亚洲精品成人7777在线观看 | 成年女人在线观看片免费视频 | 热e国产 | 久久中文字幕亚洲精品最新 | 亚洲毛片一级巨乳 | 国产午夜免费不卡精品理论片 | 欧美日韩在线视频不卡一区二区三区 | 国产一级做a爰片在线看免费 | 毛片中文字幕 | 加勒比色综合 | 久久久久久久国产精品 | 黄色在线视频网 | 91p在线 | 国产精品久久久久无毒 | 亚洲精品精品一区 | 精品丝袜国产自在线拍亚洲 | 欧美成人亚洲高清在线观看 | 欧美成人午夜毛片免费影院 | 亚洲国内 | 亚洲 欧美 国产 日韩 制服 bt | 手机av在线播放 | 超级碰碰碰在线观看 | 一级做性色a爰片久久毛片免费 |