抽象類別可以有建構子嗎?
抽象類別確實可以有建構子。與普遍看法相反,此功能允許強大的類別設計和約束執行。
抽象類別中的建構子使用
考慮以下抽象類別範例:
abstract class Product { int multiplyBy; public Product(int multiplyBy) { this.multiplyBy = multiplyBy; } public int mutiply(int val) { return multiplyBy * val; } }
在此範例中,抽象類別Product 有一個建構函數,用於初始化multipBy 欄位。擴展 Product 的特定類別可以利用此建構函數來強制類別不變量或約束字段初始化。
具體類別建構子
從 Product 繼承的具體類別必須明確呼叫父建構子因為抽象類別中沒有預設建構子。以下是一些範例:
class TimesTwo extends Product { public TimesTwo() { super(2); } } class TimesWhat extends Product { public TimesWhat(int what) { super(what); } }
特定類別 TimesTwo 將 multipBy 值硬編碼為 2,而 TimesWhat 允許呼叫者指定它。
抽象類別建構子的好處
抽象類別建構子提供了幾個好處:
注意:子類別中需要明確建構子調用,因為抽象建構子沒有預設實作。
以上是抽象類別可以有建構函數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!