Was ist Polymorphie in Java?
Polymorphismus in Java tritt auf, wenn eine oder mehrere Klassen oder Objekte durch Vererbung miteinander verwandt sind. Mit anderen Worten, es ist die Fähigkeit eines Objekts, viele Formen anzunehmen. Mit der Vererbung können Benutzer Attribute und Methoden erben, und Polymorphismus verwendet diese Methoden, um verschiedene Aufgaben auszuführen. Das Ziel ist also Kommunikation, aber der Ansatz ist anders.
Zum Beispiel haben Sie ein Smartphone für die Kommunikation., Der von Ihnen gewählte Kommunikationsmodus könnte alles sein. Es kann ein Anruf, eine Textnachricht, eine Bildnachricht, eine E-Mail usw. sein. Also, das Ziel ist gemeinsam, das ist Kommunikation, aber ihr Ansatz ist anders. Dies wird Polymorphismus genannt.
In diesem tutorial lernen Sie, –
- Was ist Polymorphismus?
- Java-Polymorphismus in Oops mit Beispiel
- Methode Überschreiben
- Unterschied zwischen Überladen und Überschreiben
- Was ist dynamischer Polymorphismus?,
- Super Keyword
- Unterschied zwischen Statisch & Dynamischer Polymorphismus
Klicken Sie hier, wenn das Video nicht zugänglich ist
Java Polymorphismus in Oops mit Beispiel
Wir haben eine übergeordnete Klasse, ‚Konto‘ mit der Funktion der Ein-und Auszahlung. Konto hat 2 Kind-Klassen
Der Betrieb der Ein-und Auszahlung ist gleich für das Speichern und Girokonten. Die geerbten Methoden aus der Account-Klasse funktionieren also.,
Änderung der Softwareanforderung
Die Anforderungsspezifikation ändert sich, was in der Softwareindustrie so üblich ist. Sie sollen ein privilegiertes Bankkonto mit Überziehungsmöglichkeit hinzufügen.
Für einen Hintergrund, Überziehung ist eine Einrichtung, wo Sie einen Betrag mehr als das Gleichgewicht in Ihrem Konto abheben.
Die Methode für privilegierte muss also neu implementiert werden., Sie ändern jedoch nicht den getesteten Code in Spar – und Girokonto. Dies ist der Vorteil von OOPS
Schritt 1), sodass beim Aufruf der Methode“ zurückgezogen “ zum Speichern des Kontos eine Methode aus der übergeordneten Kontoklasse ausgeführt wird.
Schritt 2) Aber wenn die Methode“ Abheben “ für das privilegierte Konto (Überziehungsmöglichkeit) aufgerufen wird, wird die in der privilegierten Klasse definierte Abhebungsmethode ausgeführt. Dies ist Polymorphismus.,
Methode Überschreiben
Methode Überschreiben definiert eine Superklassenmethode in einer Unterklasse neu.
Regeln für das Überschreiben von Methoden
- Die Methodensignatur, dh Methodenname, Parameterliste und Rückgabetyp müssen genau übereinstimmen.
- Die überschriebene Methode kann die Zugänglichkeit erweitern, aber nicht einschränken, dh wenn sie in der Basisklasse privat ist, kann die untergeordnete Klasse sie öffentlich machen, aber nicht umgekehrt.,
Beispiel
Unterschied zwischen Überladen und Überschreiben
Was ist Dynamischer Polymorphismus?
Dynamischer Polymorphismus ist der Mechanismus, mit dem mehrere Methoden mit demselben Namen und derselben Signatur in der Oberklasse und Unterklasse definiert werden können. Der Aufruf einer überschriebenen Methode wird zur Laufzeit aufgelöst.,
Dynamischer Polymorphismus Beispiel:
Eine Referenzvariable der Superklasse kann sich auf ein Unterklassenobjekt beziehen
Doctor obj = new Surgeon();
Betrachten Sie die Anweisung
obj.treatPatient();
Hier ist die Referenzvariable „obj“ von der übergeordneten Klasse, aber das Objekt, auf das es zeigt, ist von der untergeordneten Klasse (wie im Diagramm gezeigt).
obj.,n
Wenn eine Basisklassenreferenz zum Aufrufen einer Methode verwendet wird, wird die aufzurufende Methode von der JVM festgelegt, abhängig von dem Objekt, auf das die Referenz zeigt
Zum Beispiel, obwohl obj ein Verweis auf Doctor ist, ruft sie die Methode des Chirurgen auf, da sie auf ein Chirurgenobjekt zeigt
Dies wird während der Laufzeit entschieden und daher als dynamischer oder Laufzeitpolymorphismus bezeichnet
Super Keyword
What if the treatPatient method in the Surgeon class wants to execute the functionality defined in Doctor class and then perform its own specific functionality?,
In diesem Fall kann das Schlüsselwort super
verwendet werden, um auf Methoden der übergeordneten Klasse aus der untergeordneten Klasse zuzugreifen.
Die treatPatient-Methode in der Surgeon-Klasse könnte wie folgt geschrieben werden:
treatPatient(){ super.treatPatient(); //add code specific to Surgeon}
Das Schlüsselwort super kann verwendet werden, um auf jedes Datenelement oder Methoden der Super-Klasse in der Sub-Klasse zuzugreifen.,br>Example:-To learn Inheritance, Polymorphism & super keyword
Step 1) Copy the following code into an Editor
Difference between Static & Dynamic Polymorphism
|
|
---|---|
It relates to method overloading., | Es bezieht sich auf das Überschreiben von Methoden. |
Fehler, falls vorhanden, werden zur Kompilierungszeit behoben. Da der Code während der Kompilierung nicht ausgeführt wird, daher der Name static. Ex: void sum (int a , int b);void sum (float a, double b);int sum (int a, int b); //compiler gives error. |
Falls eine Referenzvariable eine überschriebene Methode aufruft, wird die aufgerufene Methode vom Objekt bestimmt, auf das Ihre Referenzvariable zeigt. Dies kann nur zur Laufzeit bestimmt werden, wenn Code in unter Ausführung, daher der Name dynamisch., Ex: //reference of parent pointing to child object Doctor obj = new Surgeon();// method of child calledobj.treatPatient(); |