西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁(yè)編程開(kāi)發(fā)java → Java里子類調(diào)用父類構(gòu)造方法把父類的內(nèi)容繼承怎么做?

Java里子類調(diào)用父類構(gòu)造方法把父類的內(nèi)容繼承怎么做?

前往專題相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2013/3/9 12:46:44字體大。A-A+

作者:火星十一郎點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: 父類

在Java中,子類的構(gòu)造過(guò)程中,必須調(diào)用其父類的構(gòu)造函數(shù),是因?yàn)橛欣^承關(guān)系存在時(shí),子類要把父類的內(nèi)容繼承下來(lái),通過(guò)什么手段做到的?

答案如下:    

當(dāng)你new一個(gè)子類對(duì)象的時(shí)候,必須首先要new一個(gè)父類的對(duì)像出來(lái),這個(gè)父類對(duì)象位于子類對(duì)象的內(nèi)部,所以說(shuō),子類對(duì)象比父類對(duì)象大,子類對(duì)象里面包含了一個(gè)父類的對(duì)象,這是內(nèi)存中真實(shí)的情況.構(gòu)造方法是new一個(gè)對(duì)象的時(shí)候,必須要調(diào)的方法,這是規(guī)定,要new父類對(duì)象出來(lái),那么肯定要調(diào)用其構(gòu)造方法,所以:    

第一個(gè)規(guī)則:

子類的構(gòu)造過(guò)程中,必須調(diào)用其父類的構(gòu)造方法。一個(gè)類,如果我們不寫構(gòu)造方法,那么編譯器會(huì)幫我們加上一個(gè)默認(rèn)的構(gòu)造方法,所謂默認(rèn)的構(gòu)造方法,就是沒(méi)有參數(shù)的構(gòu)造方法,但是如果你自己寫了構(gòu)造方法,那么編譯器就不會(huì)給你添加了,所以有時(shí)候當(dāng)你new一個(gè)子類對(duì)象的時(shí)候,肯定調(diào)用了子類的構(gòu)造方法,但是在子類構(gòu)造方法中我們并沒(méi)有顯示的調(diào)用基類的構(gòu)造方法,就是沒(méi)寫,如:super(); 并沒(méi)有這樣寫,但是這樣就會(huì)調(diào)用父類沒(méi)有參數(shù)的構(gòu)造方法,如果父類中沒(méi)有沒(méi)有參數(shù)的構(gòu)造方法就會(huì)出錯(cuò)。

第二個(gè)規(guī)則:

如果子類的構(gòu)造方法中沒(méi)有顯示的調(diào)用基類構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用基類無(wú)參數(shù)的構(gòu)造方法注意:如果子類的構(gòu)造方法中既沒(méi)有顯示的調(diào)用基類構(gòu)造方法,而基類中又沒(méi)有默認(rèn)無(wú)參的構(gòu)造方法,則編譯出錯(cuò),所以,通常我們需要顯示的:super(參數(shù)列表),來(lái)調(diào)用父類有參數(shù)的構(gòu)造函數(shù)。

 1 //當(dāng)你沒(méi)有使用父類默認(rèn)的構(gòu)造方法時(shí),此時(shí)在子類的構(gòu)造方法中就需要顯示的調(diào)用父類定義的構(gòu)造方法。

 2 class Animal{
 3   private String name;
 4   
 5   //如果你定義一個(gè)新的構(gòu)造方法
 6   public Animal(String name) {
 7     this.name = name;
 8   }
 9 }
10 
11 public Dog extends Animal{
12   
13   //這時(shí)你就要顯示的調(diào)用父類的構(gòu)造方法,因?yàn)樽宇惸J(rèn)調(diào)用的是父類的
14   //無(wú)參構(gòu)造方法Animal()
15   public Dog(){
16     super("小狗");  //顯示調(diào)用父類的有參構(gòu)造方法
17 
18     ....  //子類的構(gòu)造方法處理
19   }
20 }
21 
22 //當(dāng)然,如果你在父類里面把無(wú)參的構(gòu)造方法,顯示的寫出來(lái)了,比如:
23 class Animal{
24   private String name;
25 
26   //無(wú)參的構(gòu)造方法
27   public Animal() {
28     .....  //處理
29   }
30   
31   /*
32   如果你定義一個(gè)新的構(gòu)造方法,那么在子類的構(gòu)造方法中,就可以不用顯示的調(diào)用父類的構(gòu)造方法,因?yàn)樽宇愑袀(gè)無(wú)參的構(gòu)造方法,
33   子類在構(gòu)造方法中會(huì)自動(dòng)調(diào)用父類已經(jīng)定義的無(wú)參構(gòu)造方法。
34   */
35   public Animal(String name) {
36     this.name = name;
37   }
38 }

總結(jié):不過(guò)一般的,在父類中使用了構(gòu)造方法的重載,在子類中就可以根據(jù)需要,調(diào)用相應(yīng)的父類構(gòu)造方法。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
    推薦文章

    沒(méi)有數(shù)據(jù)