ホームページ > Java > &#&チュートリアル > Java オーバーライドされたメソッドは異なる戻り値の型を持つことができますか?

Java オーバーライドされたメソッドは異なる戻り値の型を持つことができますか?

Linda Hamilton
リリース: 2024-12-13 10:39:12
オリジナル
282 人が閲覧しました

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() メソッドは、Shape を拡張したより特殊なタイプである Circle オブジェクトを返します。 Circle は Shape に割り当て可能であるため、これは許容されます。

共変戻り型は、次の規則を概説する Java 言語仕様のセクション 8.4.5 に準拠しています。

  1. Void メソッドは以下の場合があります。 void メソッドによってのみオーバーライドされます。
  2. プリミティブの戻り値の型は、オーバーライドされても同じままでなければなりませんメソッド。
  3. 参照型の場合:

    • オーバーライドするメソッドの戻り値の型は、オーバーライドされるメソッドの戻り値の型のサブタイプにすることができます。
    • 戻り値type は、チェックされていない変換を介して、オーバーライドされたメソッドの戻り値の型に割り当てることができます。
    • 戻り値

Java 5 より前の Java では、不変の戻り値の型が強制されており、オーバーライドされたメソッドの戻り値の型がオーバーライドされたメソッドと正確に一致する必要がありました。

以上がJava オーバーライドされたメソッドは異なる戻り値の型を持つことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート