日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

《java入门第一季》之面向对象面试题(继承中构造方法的关系)

發(fā)布時(shí)間:2025/7/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《java入门第一季》之面向对象面试题(继承中构造方法的关系) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/*繼承中構(gòu)造方法的關(guān)系A(chǔ):子類中所有(子類的有參和無(wú)參)的構(gòu)造方法(默認(rèn)都會(huì)訪問父類)中(空參數(shù))的構(gòu)造方法,默認(rèn)訪問父類空參數(shù)構(gòu)造,不默認(rèn)訪問有參數(shù)構(gòu)造B:為什么呢?因?yàn)樽宇悤?huì)繼承父類中的數(shù)據(jù),可能還會(huì)使用父類的數(shù)據(jù)。所以,子類初始化之前,一定要先完成父類數(shù)據(jù)的初始化。注意:子類(每一個(gè)構(gòu)造方法)(無(wú)論是無(wú)參構(gòu)造還是有參構(gòu)造)的第一條語(yǔ)句(默認(rèn))都是:super(); */ class Father {int age;public Father() {System.out.println("Father的無(wú)參構(gòu)造方法");}public Father(String name) {System.out.println("Father的帶參構(gòu)造方法");} }class Son extends Father {public Son() {//super();子類默認(rèn)第一條語(yǔ)句;System.out.println("Son的無(wú)參構(gòu)造方法");}public Son(String name) {//super();子類默認(rèn)第一條語(yǔ)句;System.out.println("Son的帶參構(gòu)造方法");} } class ExtendsDemo6 {public static void main(String[] args) {//創(chuàng)建對(duì)象Son s = new Son();System.out.println("------------");Son s2 = new Son("林青霞");} }

根據(jù)執(zhí)行結(jié)果可以更直觀的了解整個(gè)過程:

接下來進(jìn)一步了解:

/*如果父類沒有無(wú)參,但是有有參構(gòu)造方法,那么子類的構(gòu)造方法會(huì)出現(xiàn)什么現(xiàn)象呢?報(bào)錯(cuò)。(但是父類沒有無(wú)參,也無(wú)有參構(gòu)造方法,不報(bào)錯(cuò)因?yàn)楦割惸J(rèn)是有有參構(gòu)造)如何解決上邊報(bào)錯(cuò)呢? A:在父類中加一個(gè)無(wú)參構(gòu)造方法,這個(gè)方式太簡(jiǎn)單。B:通過使用super關(guān)鍵字去(顯示的)調(diào)用父類的(帶參)構(gòu)造方法C:子類通過this去調(diào)用(本類)的其他構(gòu)造方法。例如this()是訪問本類的無(wú)參構(gòu)造子類中一定要有一個(gè)去訪問父類的構(gòu)造方法(一定記得訪問一次父類),否則父類數(shù)據(jù)就沒有初始化。注意事項(xiàng):this(...)或者super(...)必須出現(xiàn)在第一條語(yǔ)句上。如果不是放在第一條語(yǔ)句上,就可能對(duì)父類的數(shù)據(jù)進(jìn)行了多次初始化,所以必須放在第一條語(yǔ)句上。 */ class Father {/*public Father() {System.out.println("Father的無(wú)參構(gòu)造方法");}*/public Father(String name) {System.out.println("Father的帶參構(gòu)造方法");} }class Son extends Father {public Son() {super("隨便來");//訪問父類中的帶參構(gòu)造方法Father()。從而解決了報(bào)錯(cuò)問題System.out.println("Son的無(wú)參構(gòu)造方法");//super("隨便給");//如果放在這里就會(huì)報(bào)錯(cuò),因?yàn)樽宇惖谝痪淠J(rèn)為super();已經(jīng)對(duì)父類做了初始化,如果再一次訪問super("隨便給"),相當(dāng)于給父類構(gòu)造方法第二次初始化,報(bào)錯(cuò)!}public Son(String name) {//子類的有參構(gòu)造方法//super("你好");this();//訪問(本類中的無(wú)參構(gòu)造方法)Son(),第一句有了this就不再使用super的功能,因而就不再調(diào)用父類中的無(wú)參構(gòu)造了;System.out.println("Son的帶參構(gòu)造方法");} }class ExtendsDemo7 {public static void main(String[] args) {Son s = new Son();System.out.println("----------------");Son ss = new Son("林青霞");} }
根據(jù)執(zhí)行結(jié)果理解一下:



轉(zhuǎn)載于:https://www.cnblogs.com/wanghang/p/6299867.html

總結(jié)

以上是生活随笔為你收集整理的《java入门第一季》之面向对象面试题(继承中构造方法的关系)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。