Überladen mit unterschiedlichen Rückgabetypen
In der Programmierung ermöglicht das Überladen, dass Funktionen mit demselben Namen innerhalb einer Klasse oder eines Namensraums, aber mit unterschiedlichen Parametern existieren . In Java ist es jedoch nicht möglich, Funktionen allein aufgrund ihrer Rückgabetypen zu überladen.
Warum nicht?
Der Java-Compiler verlässt sich sowohl auf die Funktionssignatur als auch auf die Rückgabetyp zur eindeutigen Identifizierung einer Funktion. Wenn der Compiler das Überladen nur nach Rückgabetyp zulassen würde, würde dies zu Mehrdeutigkeiten führen. Betrachten Sie das folgende Beispiel:
<code class="java">public int foo() {...} public float foo() {..} ... foo(); // which one to call?</code>
In diesem Fall kann der Compiler nicht allein anhand des Rückgabetyps bestimmen, welche foo-Methode ausgeführt werden soll. Diese Mehrdeutigkeit würde zu Kompilierungsfehlern führen.
Zukunft von Java
Es gibt derzeit keine Pläne, dieses Verhalten in zukünftigen Versionen von Java zu ändern. In der Java-Sprachspezifikation heißt es ausdrücklich, dass „zwei Methoden nicht dieselbe Signatur haben können, auch wenn sie unterschiedliche Rückgabetypen haben.“
C-Überlegungen
Überladung nach Rückgabetyp ist auch in C nicht möglich. Ähnlich wie bei Java verwendet der C-Compiler alle Parameter, einschließlich des Rückgabetyps, um zwischen Funktionen mit demselben Namen zu unterscheiden. Dieser Ansatz stellt sicher, dass sich ein bestimmter Funktionsaufruf immer auf die beabsichtigte Implementierung bezieht.
Das obige ist der detaillierte Inhalt vonWarum können Sie in Java keine Methoden überladen, die ausschließlich auf Rückgabetypen basieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!