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

Java 中的重寫方法何時可以具有不同的回傳類型?

Barbara Streisand
發布: 2024-12-02 19:03:14
原創
323 人瀏覽過

When Can Overriding Methods in Java Have Different Return Types?

方法重寫中的協變回傳類型

如果滿足某些條件,Java 中的重寫方法的回傳類型可以不同。具體來說,Java 支援協變返回類型,允許重寫方法具有比它所重寫的方法更具體的返回類型。

根據Java 語言規格(JLS) 第8.4.5 節,這是允許的,只要遵循以下規則:

  • 如果原始方法傳回void,則重寫方法也必須傳回void.
  • 如果原始方法傳回原始類型,重寫方法必須傳回相同的原始類型。
  • 如果原始方法回傳參考型別:

    • 重寫方法的返回類型必須是原始方法返回的子類型
    • 或者,重寫方法的返回類型可以由原始方法的返回類型的未經檢查的轉換產生,或者
    • 重寫方法的返回型別可以是原始方法的回傳類型的擦除(泛型型別參數之後

例如,請考慮以下程式碼:

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

class CircleBuilder extends ShapeBuilder{
    ...
    @Override
    public Circle build() {
        ....
    }
}
登入後複製

在此範例中,CircleBuilder中的build() 方法覆寫了build( ) ShapeBuilder 中的方法。所允許的。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板