父類不含無參構造方法子類構造方法必須顯式調用

來源:互聯網
上載者:User

標籤:構造方法   java繼承構造方法   父類帶參構造方法   子類構造方法   子類執行個體化   

一直不知道怎麼取這個標題。。。

前兩天發現我父類中定義了一個帶參構造方法,然後子類繼承後構造方法必須先調用父類方法帶參構造方法,方法調用為super(參數,...)。

然後我就上網查,可能關鍵字沒搞對。。哈哈。。。一直沒明白,後來發現,如果父類含有不帶參構造方法,那麼子類就不需要上述操作。


那麼為什麼呢?


先說下類執行個體化的過程,也就是new一個對象的時候

首先預設啟動並執行是類中無參的構造方法(這個可能在執行個體化過程java會為每一個類自動建立的),這是java預設首先啟動並執行;

當然如果你重寫無參的了構造方法那麼預設啟動並執行就是你重寫的無參構造方法;

還有一種情況就是你唯寫了帶參的構造方法,那麼此時,執行個體化對象的時候,需要手動指定參數來運行含有對應參數的構造方法來構造對象。


例1:

package com.zero;public class Father {//年齡private int age;//僅有一個帶參數的構造方法public Father (int i){this.age = i;System.out.println("執行個體化父類 ag = " + age);}//main方法public static void main (String []  args) {//執行個體化對象時必須指定參數以運行對應的構造方法執行個體(構造)對象Father fa = new Father(40);Father fa1 = new Father(50);}}
例1運行結果

執行個體化父類 ag = 40執行個體化父類 ag = 50


知道了類執行個體化過程之後討論下在繼承關係下,執行個體化子類又是怎麼樣的吧。。。。

在繼承關係下執行個體化子類的時候會先執行個體化其父類,然後再執行個體化子類。

也就是說在new一個子類的時候,其實是需要先把父類new出來的,如果父類中還有父類,那麼就會逐層進行,從最頂層的父類先執行個體化,最後才到當前的子類。


例2:

package com.zero;public class Son extends Father{private int age;//子類構造方法——必須先顯式調用父類構造方法public Son(int i) {super(i);//必須先調用父類的構造方法,然後才能寫子類構造方法的其他邏輯this.age = i - 20;System.out.println("執行個體化子類 age = " + age);}//main方法public static void main (String [] args) {//執行個體化子類SonSon so = new Son(40);Son so1 = new Son(50);}}

例2運行結果:

執行個體化父類 ag = 40執行個體化子類 age = 20執行個體化父類 ag = 50執行個體化子類 age = 30


由例2可以得出結論父類不含無參構造方法時子類構造方法必須顯式調用父類帶參構造方法,因為子類執行個體化的時候先需要執行個體化父類

當然上面說在new子類的時候需要先new父類,在例2中super(i)其實就是調用父類的public Father (int i)構造方法,即這裡就相當於new了Father對象了

public Father (int i){this.age = i;System.out.println("執行個體化父類 ag = " + age);}



著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

父類不含無參構造方法子類構造方法必須顯式調用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.