ホームページ > 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.
  • 元のメソッドがプリミティブ型を返す場合、オーバーライドするメソッドは同じプリミティブ型を返す必要があります。
  • 元のメソッドが参照型を返す場合:

    • オーバーライドするメソッドの戻り値の型は、元のメソッドの戻り値のサブタイプである必要がありますtype.
    • あるいは、オーバーライドするメソッドの戻り値の型は、元のメソッドの戻り値の型の未チェックの変換から生じることもあります。または、
    • オーバーライドするメソッドの戻り値の型は、元のメソッドの戻り値の型の消去 (ジェネリック型パラメータの後

たとえば、次のコードを考えてみましょう。

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

class CircleBuilder extends ShapeBuilder{
    ...
    @Override
    public Circle build() {
        ....
    }
}
ログイン後にコピー

この例では、CircleBuilder の build() メソッドが build( ) ShapeBuilder のメソッド。オーバーライドされたメソッドの戻り値の型は Shape ですが、オーバーライドされたメソッドの戻り値の型は、Shape のサブタイプである Circle です。これは、Java の共変戻り型ルールによって許可されています。

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

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