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

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

Barbara Streisand
Barbara Streisand原創
2024-12-02 19:03:14278瀏覽

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中文網其他相關文章!

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