Wenn das Ohr auf das „Überschreiben“ des Trommelfells trifft, erfahren wir schnell, dass dies entweder durch unterschiedliche Datentypen oder durch die Übergabe von Argumenten an eine Funktion geschehen kann, was ein Programmierer ursprünglich beim Lernen gelernt hat Polymorphismus in Java. Vor JDK 5.0 war dies nicht möglich überschreiben eine Methode durch Ändern des Rückgabetyps. Wenn wir eine übergeordnete Klassenmethode überschreiben, müssen die Namensargumenttypen und der Rückgabetyp der überschreibenden Methode in der untergeordneten Klasse genau mit denen der übergeordneten Klassenmethode übereinstimmen. Die übergeordnete Methode soll gewesen sein invariant in Bezug auf den Rückgabetyp.
Ab Java Version 5.0 ist es möglich, unterschiedliche Rückgabetypen für eine überschreibende Methode in der untergeordneten Klasse zu haben, aber der Rückgabetyp des untergeordneten Elements sollte ein Untertyp des Rückgabetyps des übergeordneten Elements sein. Die übergeordnete Methode wird Variante in Bezug auf den Rückgabetyp.
Der kovariante Rückgabetyp basiert auf dem Liskov-Substitutionsprinzip .
Nun, Geeks, ihr fragt euch bestimmt, warum ihr es verwenden solltet, für das wir die Vorteile wie folgt auflisten:
Java int zu char
- Es hilft, verwirrende Typumwandlungen in der Klassenhierarchie zu vermeiden und so den Code lesbar, verwendbar und wartbar zu machen.
- Wir haben die Freiheit, beim Überschreiben von Methoden spezifischere Rückgabetypen zu verwenden.
- Hilfe bei der Verhinderung von ClassCastExceptions zur Laufzeit bei Rückgaben
Notiz: Wenn wir die Rückgabetypen „Base“ und „Derived“ vertauschen, funktioniert das obige Programm nicht. Bitte sehen Das Programm zum Beispiel.
Beispiel Zwei Klassen, die für Rückgabetypen verwendet werden
Datenstrukturen JavaJava
// Java Program to Demonstrate Different Return Types // if Return Type in Overridden method is Sub-type // Class 1 class A { } // Class 2 class B extends A { } // Class 3 // Helper class (Base class) class Base { // Method of this class of class1 return type A fun() { // Display message only System.out.println('Base fun()'); return new A(); } } // Class 4 // Helper class extending above class class Derived extends Base { // Method of this class of class1 return type B fun() { // Display message only System.out.println('Derived fun()'); return new B(); } } // Class 5 // Main class public class GFG { // Main driver method public static void main(String args[]) { // Creating object of class3 type Base base = new Base(); // Calling method fun() over this object // inside main() method base.fun(); // Creating object of class4 type Derived derived = new Derived(); // Again calling method fun() over this object // inside main() method derived.fun(); } }
Ausgabe:
Base fun() Derived fun()
Quiz erstellen