首頁 >Java >java教程 >Java 隱式超級建構子錯誤:如何修復「隱式超級建構子...預設建構子未定義」?

Java 隱式超級建構子錯誤:如何修復「隱式超級建構子...預設建構子未定義」?

DDD
DDD原創
2024-12-25 12:21:35689瀏覽

Java Implicit Super Constructor Error: How to Fix

Java 錯誤:預設建構子未定義隱式超級建構子

問題:子類別和抽象基底類別的預設建構函式錯誤

Java 開發人員遇到錯誤「Implicit super預設建構函數的建構子 BaseClass() 未定義。他們想知道是否可以在仍然遵守模板方法模式的情況下刪除建構函式。

A:建構與預設建構子

出現錯誤是因為基底類別( BaseClass) 宣告一個建構子(public BaseClass(String someString)),停用預設建構函數(不帶參數)。當從子類別 (ACSubClass) 中刪除建構函式時,編譯器會透過預設建構函式插入對基底類別 (super()) 的無參構造函數的隱式呼叫。由於 BaseClass 沒有無參構造函數,因此這是非法的。

可能的解決方案:

  1. 從BaseClass 刪除建構子: 允許基底類別只有預設建構函數,子類別可以從BaseClass繼承。
  2. 在 BaseClass 中聲明無參構造函數: 將無參構造函數加入基類,可以作為唯一的建構函數,也可以與其他建構函數一起使用。

但是,如果基底類別需要建構子參數,這些解可能不可行。

此外,請考慮重構設計:

  • 使用工廠創建子類實例:創建一個工廠類,使用必要的參數處理子類的創建。
  • 將參數傳遞給 getName() 方法: 以允許參數自訂名稱的方式設計 getName() 方法傳回名稱值。

以上是Java 隱式超級建構子錯誤:如何修復「隱式超級建構子...預設建構子未定義」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn