簡體   English   中英

“構造函數不是繼承的”究竟意味着什么?

[英]What does “constructors are not inherited” exactly mean?

我在Java中讀到“構造函數不是繼承的”。

另一方面,我還讀到如果我沒有顯式調用super ,Java會自動調用沒有參數的超類構造函數(在這種情況下必須存在這樣的構造函數)。

是不是自動調用超類構造函數(沒有參數)的繼承形式?

“構造函數不是繼承的”究竟意味着什么?

這意味着你不能使用超類的構造函數創建子類 - 如果子類也沒有聲明它。 一個例子;

class A {
  A() {}
  A(String s) {}
}

class B extends A {    
}

現在你不能這樣做:

B b = new B("testing");

這僅僅意味着你的超類有一個構造函數並不意味着子類會自動獲得相同的構造函數; 你必須手動定義它。

默認構造函數是一種異常,有些不是。 它是為你自動定義的,但它並不是真正的“繼承”,因為它仍然是子類的一部分; 它不是超類的成員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM