Das Wort Polymorphismus bedeutet, viele Formen zu haben. Mit einfachen Worten können wir Java-Polymorphismus als die Fähigkeit einer Nachricht definieren, in mehr als einer Form angezeigt zu werden. In diesem Artikel erfahren wir, was Polymorphismus ist und welchen Typ er hat.
Reale Illustration des Polymorphismus in Java : Eine Person kann gleichzeitig unterschiedliche Eigenschaften haben. Wie ein Mann ist er gleichzeitig Vater, Ehemann und Angestellter. Dieselbe Person zeigt also in unterschiedlichen Situationen unterschiedliche Verhaltensweisen. Dies nennt man Polymorphismus.
Was ist Polymorphismus in Java?
Polymorphismus gilt als eines der wichtigen Merkmale der objektorientierten Programmierung. Polymorphismus ermöglicht es uns, eine einzelne Aktion auf unterschiedliche Weise auszuführen. Mit anderen Worten: Polymorphismus ermöglicht es Ihnen, eine Schnittstelle zu definieren und mehrere Implementierungen zu haben. Das Wort Poly bedeutet viele und Morphs bedeutet Formen, also viele Formen.
Arten von Java-Polymorphismus
In Java wird der Polymorphismus hauptsächlich in zwei Typen unterteilt:
- Polymorphismus zur Kompilierungszeit
- Laufzeitpolymorphismus
Polymorphismus zur Kompilierungszeit in Java
Es wird auch als statischer Polymorphismus bezeichnet. Diese Art von Polymorphismus wird durch Funktionsüberladung oder Operatorüberladung erreicht.
Matrix in C-Sprache
Notiz: Aber Java unterstützt das Operator Overloading nicht.

Methodenüberladung
Wenn es mehrere Funktionen mit demselben Namen, aber unterschiedlichen Parametern gibt, spricht man von diesen Funktionen überladen . Funktionen können durch Änderungen in der Anzahl der Argumente und/oder durch eine Änderung in der Art der Argumente überlastet werden.
Beispiel 1:
Java
// Java Program for Method overloading> // By using Different Types of Arguments> // Class 1> // Helper class> class> Helper {> >// Method with 2 integer parameters> >static> int> Multiply(>int> a,>int> b)> >{> >// Returns product of integer numbers> >return> a * b;> >}> >// Method 2> >// With same name but with 2 double parameters> >static> double> Multiply(>double> a,>double> b)> >{> >// Returns product of double numbers> >return> a * b;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>5.5>,>6.3>));> >}> }> |
>
stapelt Java
>Ausgabe
8 34.65>
Beispiel 2:
Java
Gray-Code
// Java program for Method Overloading> // by Using Different Numbers of Arguments> // Class 1> // Helper class> class> Helper {> >// Method 1> >// Multiplication of 2 numbers> >static> int> Multiply(>int> a,>int> b)> >{> >// Return product> >return> a * b;> >}> >// Method 2> >// // Multiplication of 3 numbers> >static> int> Multiply(>int> a,>int> b,>int> c)> >{> >// Return product> >return> a * b * c;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>2>,>7>,>3>));> >}> }> |
>
>Ausgabe
8 42>
Subtypen des Polymorphismus zur Kompilierungszeit
1. Funktionsüberladung
Es handelt sich um eine Funktion in C++, bei der mehrere Funktionen denselben Namen, aber unterschiedliche Parameterlisten haben können. Der Compiler entscheidet anhand der Anzahl und Art der an die Funktion übergebenen Argumente, welche Funktion aufgerufen werden soll.
2. Überlastung des Bedieners
Dabei handelt es sich um eine Funktion in C++, bei der den Operatoren wie +, -, * usw. zusätzliche Bedeutungen zugewiesen werden können, wenn sie auf benutzerdefinierte Datentypen angewendet werden.
3. Vorlage
Es handelt sich um eine leistungsstarke Funktion in C++, die es uns ermöglicht, generische Funktionen und Klassen zu schreiben. Eine Vorlage ist ein Entwurf zum Erstellen einer Familie von Funktionen oder Klassen.
Laufzeitpolymorphismus in Java
Es wird auch als Dynamic Method Dispatch bezeichnet. Dabei handelt es sich um einen Prozess, bei dem ein Funktionsaufruf der überschriebenen Methode zur Laufzeit aufgelöst wird. Diese Art von Polymorphismus wird durch Methodenüberschreibung erreicht. Überschreibende Methode tritt dagegen auf, wenn eine abgeleitete Klasse eine Definition für eine der Mitgliedsfunktionen der Basisklasse hat. Diese Grundfunktion soll sein überschrieben .
Beispiel
Java
zufällig nicht in Java
dateformat.format
// Java Program for Method Overriding> // Class 1> // Helper class> class> Parent {> >// Method of parent class> >void> Print()> >{> >// Print statement> >System.out.println(>'parent class'>);> >}> }> // Class 2> // Helper class> class> subclass1>extends> Parent {> >// Method> >void> Print() { System.out.println(>'subclass1'>); }> }> // Class 3> // Helper class> class> subclass2>extends> Parent {> >// Method> >void> Print()> >{> >// Print statement> >System.out.println(>'subclass2'>);> >}> }> // Class 4> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating object of class 1> >Parent a;> >// Now we will be calling print methods> >// inside main() method> >a =>new> subclass1();> >a.Print();> >a =>new> subclass2();> >a.Print();> >}> }> |
>
>Ausgabe
subclass1 subclass2>
Erklärung des obigen Codes:
Hier in diesem Programm wird beim Erstellen eines Objekts einer untergeordneten Klasse die Methode innerhalb der untergeordneten Klasse aufgerufen. Dies liegt daran, dass die Methode in der übergeordneten Klasse von der untergeordneten Klasse überschrieben wird. Da die Methode überschrieben wird, hat diese Methode eine höhere Priorität als die übergeordnete Methode innerhalb der untergeordneten Klasse. Der Rumpf innerhalb der untergeordneten Klasse wird also ausgeführt.
Untertyp des Laufzeitpolymorphismus
ich. Virtuelle Funktionen
Es ermöglicht einem Objekt einer abgeleiteten Klasse, sich so zu verhalten, als wäre es ein Objekt der Basisklasse. Die abgeleitete Klasse kann die virtuelle Funktion der Basisklasse überschreiben, um eine eigene Implementierung bereitzustellen. Der Funktionsaufruf wird zur Laufzeit aufgelöst, abhängig vom tatsächlichen Typ des Objekts.
Diagramm –

Polymorphismus in Java ist ein Konzept, das es ermöglicht, Objekte verschiedener Klassen als Objekte einer gemeinsamen Klasse zu behandeln. Es ermöglicht Objekten, sich basierend auf ihrem spezifischen Klassentyp unterschiedlich zu verhalten.
Vorteile des Polymorphismus in Java
- Erhöht die Wiederverwendbarkeit von Code, indem Objekte verschiedener Klassen als Objekte einer gemeinsamen Klasse behandelt werden können.
- Verbessert die Lesbarkeit und Wartbarkeit von Code, indem die Menge an Code reduziert wird, die geschrieben und gewartet werden muss.
- Unterstützt die dynamische Bindung und ermöglicht den Aufruf der richtigen Methode zur Laufzeit basierend auf der tatsächlichen Klasse des Objekts.
- Ermöglicht die Behandlung von Objekten als einzelner Typ und erleichtert so das Schreiben von generischem Code, der Objekte unterschiedlicher Typen verarbeiten kann.
Nachteile des Polymorphismus in Java
- Kann es schwieriger machen, das Verhalten eines Objekts zu verstehen, insbesondere wenn der Code komplex ist.
- Dies kann zu Leistungsproblemen führen, da polymorphes Verhalten möglicherweise zusätzliche Berechnungen zur Laufzeit erfordert.