真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用java子父類的構(gòu)造方法-創(chuàng)新互聯(lián)

首先,構(gòu)造方法本身會(huì)有一個(gè)隱式的無(wú)參構(gòu)造(默認(rèn)):

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的獻(xiàn)縣網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

①不寫構(gòu)造方法,類中的第一行代碼事實(shí)上有一個(gè)默認(rèn)的無(wú)參構(gòu)造(系統(tǒng)會(huì)隱式為你寫好)

public class Student {
        private String name;
//        public Student() {}      隱式地“寫”在這里,你看不見
//  Strudent類中雖然沒有寫構(gòu)造方法,但相當(dāng)于有上面的無(wú)參構(gòu)造
//   只不過是隱式的,你看不見
}

②只寫帶參構(gòu)造方法,相當(dāng)于只有該帶參構(gòu)造方法(隱式的無(wú)參構(gòu)造會(huì)被屏蔽無(wú)視掉,視為無(wú)效)

public class Student {
        private String name;
        public Student(String name) {
            this.name=name;
        }
//  此時(shí)原來(lái)Strudent類中的隱式的無(wú)參構(gòu)造方法被屏蔽了,無(wú)效了
//  類中只有帶參構(gòu)造
}

③若想同時(shí)擁有無(wú)參和帶參構(gòu)造,必須顯式地寫出無(wú)參和帶參構(gòu)造方法

public class Student {
        private String name;
        public Student() {}
// 顯式地將無(wú)參構(gòu)造寫出來(lái)        
        public Student(String name) {
            this.name=name;
        }
//  若想Strudent類中擁有無(wú)參構(gòu)造方法,必須顯式地寫出來(lái)
}

進(jìn)一步結(jié)合繼承,就需要考慮到子父類:

④在子類的構(gòu)造方法(無(wú)論是無(wú)參和有參)中,方法中的第一行代碼事實(shí)上都隱式地包含了父類的無(wú)參構(gòu)造方法

即: super()

public class Stu extends Student {
    private String name;
    public Stu() {
    // super();
    // 在子類的無(wú)參構(gòu)造中,super()是隱式的“寫”在這里的
    }
    
    public Stu(String name) {
    // super();
    this.name=name;
    // 在子類的帶參構(gòu)造,上面的super()同樣也是隱式的“寫”在這里的
    }
}

這就是為什么,調(diào)用子類的構(gòu)造方法時(shí),都會(huì)先調(diào)用父類的無(wú)參構(gòu)造方法了,因?yàn)槟J(rèn)的super()存在。

⑤同理,類似與上面的②,此時(shí)若寫一個(gè)有參構(gòu)造,super(xx)會(huì)把隱式的super()屏蔽掉

public class Stu extends Student {
    private String name;
    
    public Stu(String name) {
    // super();  原來(lái)隱式寫在這里的super()被屏蔽了,無(wú)效了
    super(name);
    
    // 在子類的帶參構(gòu)造, 由于的super(name)的存在,super()無(wú)效了
    //此時(shí)子類的帶參構(gòu)造中,只有super(name)
    }
}

這就是為什么當(dāng)父類沒有無(wú)參構(gòu)造(即只有帶參構(gòu)造——對(duì)應(yīng)情況②)時(shí),子類的構(gòu)造方法編譯無(wú)法通過。這是因?yàn)樽宇惖臉?gòu)造函數(shù)(帶參或無(wú)參)將調(diào)用父類的無(wú)參構(gòu)造函數(shù)。 由于編譯器試圖向子類中的2個(gè)構(gòu)造函數(shù)中插入super() ,但父類的默認(rèn)構(gòu)造函數(shù)未定義,因此編譯器會(huì)報(bào)告錯(cuò)誤消息。

要解決這個(gè)問題,只需要

1)添加一個(gè)無(wú)參構(gòu)造函數(shù)給父類——顯式地在父類中添加無(wú)參構(gòu)造

2)刪除父類中自定義的有參構(gòu)造函數(shù)——等價(jià)于恢復(fù)了默認(rèn)的無(wú)參構(gòu)造

3)將 Super(XXX) 添加到子類構(gòu)造函數(shù)——通過⑤的原來(lái)來(lái)屏蔽默認(rèn)的super()

以上就是JAVA繼承中子父類的構(gòu)造方法的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!


新聞名稱:如何使用java子父類的構(gòu)造方法-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://weahome.cn/article/ddhchj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部