Polymorphismus in Java

Polymorphismus in Java ist ein Konzept, mit dem wir eine einzige Aktion auf verschiedene Arten ausführen können. Polymorphismus leitet sich von 2 griechischen Wörtern ab: poly und morphs. Das Wort „poly“ bedeutet „viele“ und „morphs“ bedeutet „Formen“. Also bedeutet Polymorphismus viele Formen.

Es gibt zwei Arten von Polymorphismus in Java: Polymorphismus zur Kompilierzeit und Polymorphismus zur Laufzeit. Wir können Polymorphismus in Java durch Methodenüberladung und Methodenüberschreibung durchführen.

Wenn Sie eine statische Methode in Java überladen, ist das ein Beispiel für Kompilierzeit-Polymorphismus. Hier werden wir uns auf den Laufzeit-Polymorphismus in Java konzentrieren.

Laufzeit-Polymorphismus in Java

Laufzeit-Polymorphismus oder Dynamic Method Dispatch ist ein Prozess, bei dem der Aufruf einer überschriebenen Methode zur Laufzeit und nicht zur Kompilierzeit aufgelöst wird.

Bei diesem Prozess wird eine überschriebene Methode über die Referenzvariable einer Oberklasse aufgerufen. Die Bestimmung der aufzurufenden Methode basiert auf dem Objekt, auf das die Referenzvariable verweist.

Lassen Sie uns zunächst das Upcasting vor dem Runtime Polymorphism verstehen.

Upcasting

Wenn die Referenzvariable der Parent-Klasse auf das Objekt der Child-Klasse verweist, spricht man von Upcasting. Zum Beispiel:

Upcasting in Java

Für das Upcasting können wir die Referenzvariable eines Klassentyps oder eines Schnittstellentyps verwenden. Ein Beispiel:

Hier wäre die Beziehung der Klasse B:

B IS-A AB IS-A IB IS-A Object

Da Object die Wurzelklasse aller Klassen in Java ist, können wir schreiben B IS-A Object.

Beispiel für Java Runtime Polymorphism

In diesem Beispiel erstellen wir zwei Klassen Bike und Splendor. Die Klasse Splendor erweitert die Klasse Bike und überschreibt deren run()-Methode. Wir rufen die run-Methode über die Referenzvariable der Klasse Parent auf. Da sie auf das Objekt der Unterklasse verweist und die Methode der Unterklasse die Methode der Elternklasse überschreibt, wird die Methode der Unterklasse zur Laufzeit aufgerufen.

Da der Methodenaufruf von der JVM und nicht vom Compiler bestimmt wird, spricht man von Laufzeit-Polymorphismus.

Jetzt testen

Ausgabe:

running safely with 60km.

Beispiel für Java-Laufzeit-Polymorphismus: Bank

Betrachten Sie ein Szenario, in dem die Klasse Bank eine Methode zum Ermitteln des Zinssatzes bereitstellt. Der Zinssatz kann jedoch je nach Bank unterschiedlich sein. Zum Beispiel bieten die Banken SBI, ICICI und AXIS einen Zinssatz von 8,4 %, 7,3 % und 9,7 % an.

Beispiel für Java Runtime Polymorphism von Bank

Anmerkung: Dieses Beispiel ist auch im Methoden-Overriding gegeben, aber es gab kein Upcasting.

Testen Sie es jetzt

Ausgabe:

SBI Rate of Interest: 8.4ICICI Rate of Interest: 7.3AXIS Rate of Interest: 9.7

Java-Laufzeit-Polymorphismus-Beispiel: Shape

Testen Sie es jetzt

Ausgabe:

drawing rectangle...drawing circle...drawing triangle...

Java Runtime Polymorphism Example: Tier

Jetzt testen

Ausgabe:

eating bread...eating rat...eating meat...

Java-Laufzeit-Polymorphismus mit Daten-Member

Eine Methode wird überschrieben, nicht die Daten-Member, daher kann Laufzeit-Polymorphismus nicht durch Daten-Member erreicht werden.

Im folgenden Beispiel haben beide Klassen ein Daten-Member speedlimit. Wir greifen auf das Datenmitglied über die Referenzvariable der Klasse Parent zu, die auf das Objekt der Unterklasse verweist. Da wir auf das Datenelement zugreifen, das nicht überschrieben ist, wird es immer auf das Datenelement der Parent-Klasse zugreifen.

Regel: Laufzeit-Polymorphie kann nicht durch Datenmember erreicht werden.

Testen Sie es jetzt

Ausgabe:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.