java:子類和父類之間的調用方法_構造方法

來源:互聯網
上載者:User

標籤:預設   子類   一個   沒有   未定義   代碼   nbsp   構造   基礎知識   

回顧基礎知識:

1.如果一個類中沒有定義構造器,編譯器在編譯時間會自動加上預設無參構造器

定義格式:public ClassName() {}

2. this 和 super 的區別。

3.每個類直接或間接是Object的子類,Object只有一個無參構造方法。

4.編譯器會在每個構造方法的第一行隱式添加父類的預設無參構造器,即添加super()。

 

容易犯的錯誤:

class Family extends Object {

public Family(int member) {

}

}

class Father extends Family {

public Father() {

}

}

 

以上代碼會產生編譯錯誤:

Implicit super constructor Family() is undefined. Must explicitly invoke another constructor

 

因為父類定義了一個帶參數的構造器,因此編譯器不會添加預設無參構造方法,

但是因為在子類的構造器中沒有顯式調用父類的某個構造方法,因此編譯器會自動添加super()方法,

但是父類中不存在預設無參構造方法,因此會提示預設無參構造方法未定義錯誤。

 

修改後的代碼:

class Family extends Object {

public Family(int member) {

}

}

class Father extends Family {

public Father() {

super(6);

}

}


這樣,在子類的構造器中顯式調用了父類的某個構造器,所以編譯器不會自動添加super()方法。

 

java:子類和父類之間的調用方法_構造方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.