Heim >Java >javaLernprogramm >Können überschriebene Java-Methoden unterschiedliche Rückgabetypen haben?

Können überschriebene Java-Methoden unterschiedliche Rückgabetypen haben?

Linda Hamilton
Linda HamiltonOriginal
2024-12-13 10:39:12353Durchsuche

Can Java Overridden Methods Have Different Return Types?

Können überschriebene Methoden unterschiedliche Rückgabetypen haben?

Überschriebene Methoden in Java bieten die Flexibilität, die Rückgabetypen zu variieren, indem sie dem Prinzip der kovarianten Rückgabetypen folgen. Dies bedeutet, dass eine überschreibende Methode einen spezifischeren Datentyp zurückgeben kann als den in der überschriebenen Methode deklarierten.

Betrachten Sie zur Veranschaulichung das folgende Beispiel:

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

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

In diesem Szenario, obwohl ShapeBuilder Während die build()-Methode ein Shape-Objekt zurückgibt, gibt die übergeordnete build()-Methode von CircleBuilder ein Circle-Objekt zurück, bei dem es sich um einen spezielleren Typ handelt, der Shape erweitert. Dies ist zulässig, da Circle zu Shape zuweisbar ist.

Kovariante Rückgabetypen entsprechen Abschnitt 8.4.5 der Java-Sprachspezifikation, in dem die folgenden Regeln aufgeführt sind:

  1. Void-Methoden können sein Wird nur durch Void-Methoden überschrieben.
  2. Primitive Rückgabetypen müssen beim Überschreiben gleich bleiben Methoden.
  3. Für Referenztypen:

    • Der Rückgabetyp der überschreibenden Methode kann ein Untertyp des Rückgabetyps der überschriebenen Methode sein.
    • Die Rückgabe Der Typ kann durch ungeprüfte Konvertierung dem Rückgabetyp der überschriebenen Methode zugewiesen werden.
    • Die Rückgabetypen können gelöscht werden Gleicher Typ.

Vor Java 5 erzwang Java invariante Rückgabetypen, sodass der Rückgabetyp überschriebener Methoden genau mit der überschriebenen Methode übereinstimmen musste.

Das obige ist der detaillierte Inhalt vonKönnen überschriebene Java-Methoden unterschiedliche Rückgabetypen haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn