Java 建構子繼承:為什麼不呢?
與其他物件導向語言不同,Java 不繼承建構子。當子類別繼承超類別時,它不會自動取得超類別的建構子。相反,子類別必須明確定義自己的建構函數,使用 super 關鍵字呼叫適當的超類別建構函數。
為什麼 Java 中沒有建構子繼承?
主要原因這種設計選擇是為了保持建構子的封裝性。如果建構子是繼承的,那麼由於繼承自 Object 類,每個類別最終都會有一個無參數建構子。這會導致歧義和潛在的安全性問題。
例如,如果 FileInputStream 有一個無參數建構函數,則以下程式碼會有問題:
FileInputStream stream = new FileInputStream();
流會開啟到哪個檔案?透過要求子類別明確定義自己的建構子來指定必要的參數,可以消除這種歧義。
明確建構子的好處
此設計決策也提供了幾個好處:
以上是Java建構函式繼承:為什麼Java不繼承建構函式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!