


Können überschreibende Methoden in Java unterschiedliche Rückgabetypen haben?
Überschreiben von Methoden mit kovarianten Rückgabetypen in Java
Entgegen der landläufigen Meinung ist es tatsächlich möglich, dass überschriebene Methoden hinsichtlich ihrer Rückgabe abweichen Typen in Java. Genauer gesagt erlaubt Java kovariante Rückgabetypen, sodass eine überschreibende Methode einen Rückgabetyp besitzen kann, der verfeinert ist als der der überschriebenen Methode. Dies bedeutet, dass der Rückgabetyp der überschreibenden Methode dem Rückgabetyp der überschriebenen Methode zuweisbar sein muss.
Ein anschauliches Beispiel wäre das folgende Codefragment:
class ShapeBuilder { ... public Shape build() { .... } } class CircleBuilder extends ShapeBuilder{ ... @Override public Circle build() { .... } }
In diesem Fall , überschreibt die build()-Methode der CircleBuilder-Klasse die von ShapeBuilder geerbte build()-Methode. Entscheidend ist, dass die build()-Methode in CircleBuilder ein Circle-Objekt zurückgibt, das im Vergleich zum von ShapeBuilder zurückgegebenen Shape-Objekt einen spezifischeren Typ hat.
Dieses Verhalten ist in Abschnitt 8.4.5 der Java-Sprachspezifikation kodifiziert. Darin heißt es ausdrücklich: „Rückgabetypen können zwischen Methoden variieren, die sich gegenseitig überschreiben, wenn es sich bei den Rückgabetypen um Referenztypen handelt.“ Dieses Prinzip liegt dem Konzept kovarianter Rückgaben zugrunde, wobei der Rückgabetyp einer überschreibenden Methode auf einen Untertyp spezialisiert werden kann.
Darüber hinaus werden in der Spezifikation spezifische Bedingungen beschrieben, die für die Ersetzbarkeit des Rückgabetyps zwischen zwei Methoden erfüllt sein müssen :
- Void-Rückgabetypen müssen genau übereinstimmen.
- Primitive Rückgabetypen müssen übereinstimmen identisch.
-
Referenzrückgabetypen müssen entweder:
- Subtypen voneinander sein.
- Durch ungeprüfte Konvertierung in einen Subtyp voneinander konvertierbar sein.
Vor Java 5 hielt Java an der invarianten Rückgabe fest Typen. Im Gegensatz dazu bieten kovariante Rückgabetypen eine größere Flexibilität beim Überschreiben von Methoden, sodass die Rückgabetypen besser an der spezifischen Implementierung der überschriebenen Methode ausgerichtet werden können.
Das obige ist der detaillierte Inhalt vonKönnen überschreibende Methoden in Java unterschiedliche Rückgabetypen haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Detaillierte Erläuterung des Designs von SKU- und SPU-Tabellen auf E-Commerce-Plattformen In diesem Artikel werden die Datenbankdesignprobleme von SKU und SPU in E-Commerce-Plattformen erörtert, insbesondere wie man mit benutzerdefinierten Verkäufen umgeht ...

Wenn Sie TKMybatis für Datenbankabfragen verwenden, ist das Aufbau von Abfragebedingungen ein häufiges Problem. Dieser Artikel wird ...
