首頁 >Java >java教程 >Java 重寫方法可以有不同的回傳類型嗎?

Java 重寫方法可以有不同的回傳類型嗎?

Linda Hamilton
Linda Hamilton原創
2024-12-13 10:39:12286瀏覽

Can Java Overridden Methods Have Different Return Types?

重寫的方法可以有不同的回傳型別嗎?

Java 中的重寫方法可以靈活地改變回傳類型,遵循協變回傳類型的原則。這意味著重寫方法可以傳回比被重寫方法中聲明的資料類型更具體的資料類型。

為了說明這一點,請考慮以下範例:

class ShapeBuilder {
    ...
    public Shape build() {
        ....
    }
}

class CircleBuilder extends ShapeBuilder{
    ...
    @Override
    public Circle build() {
        ....
    }
}

在這種情況下,儘管ShapeBuilder 的build() 方法傳回一個Shape 對象,CircleBuilder 的重寫build()方法傳回一個Circle 對象,這是一個擴展Shape 的更專業的類型。這是允許的,因為 Circle 可分配給 Shape。

協變返回類型遵循 Java 語言規範第 8.4.5 節,其中概述了以下規則:

  1. Void 方法可能是僅由 void 方法重寫。
  2. 重寫中的原始返回類型必須保持相同
  3. 對於引用類型:

    • 重寫方法的回傳類型可以是重寫方法的傳回類型的子類型。
    • 傳回類型可以透過未經檢查的轉換分配給重寫方法的回傳類型。
    • 回傳型別可以

在Java 5 之前,Java 強制回傳型別不變,要求重寫方法的回傳型別與被重寫方法精確匹配。

以上是Java 重寫方法可以有不同的回傳類型嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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