Arten von Polymorphismus in Java [Statischer und dynamischer Polymorphismus mit Beispielen]
Veröffentlicht: 2021-06-18Inhaltsverzeichnis
Was ist Polymorphismus in Java?
Eines der wichtigsten Konzepte der objektorientierten Programmierung (OOP) ist Polymorphismus, was bedeutet, dass eine einzelne Aktion auf unterschiedliche Weise ausgeführt werden kann. Es leitet sich von den griechischen Wörtern ab: poly und morphs bedeutet viele und Formen. Die verschiedenen Formen existieren, wenn sie durch Vererbung verwandt sind.
Wie bei der Vererbung, bei der Methoden und Attribute von einer anderen Klasse geerbt werden, wendet die Polymorphie diese Methoden an und führt unterschiedliche Aufgaben aus. Ein Objekt ist in der Lage, sich durch Polymorphismus in verschiedene Formen zu formen.
Das heißt, eine Entität kann verschiedene Operationen in verschiedenen Szenarien ausführen. Eine der häufigsten Verwendungen von Polymorphismus in der objektorientierten Programmierung ist, wenn eine Elternklassenreferenz verwendet wird, um auf ein Kindklassenobjekt zu verweisen. Lesen Sie mehr über verschiedene OOPs-Konzepte und Beispiele.
Polymorphismus in Java kann durch drei Methoden erreicht werden:
Methodenüberschreibung: Wenn eine Oberklasse und eine Unterklasse aus derselben Methode bestehen, bezieht sich die Methodenüberschreibung auf den Prozess des Überschreibens der Methode in der Oberklasse durch die Methode in der Unterklasse. Als Ergebnis wird dieselbe Methode unter verschiedenen Bedingungen verwendet, die unterschiedliche Operationen ausführen.
Ausgabe des Programms:
Programmiersprache Java
Gemeinsame englische Sprache
- Methodenüberladung: Methodenüberladung bezieht sich auf den Prozess der Erstellung von Methoden mit demselben Namen, aber mit unterschiedlichen Parametern. Beispiele sind: void func() { … }, void func(int a) { … }, float func(double a) { … }, float func(int a, float b) { … }.
Ausgabe
**********
##########
- Operatorüberladung: Die Operatorüberladung ist ein Konzept in Java, bei dem sich ein Operator mit verschiedenen Operanden unterschiedlich verhält. Beispiele beinhalten:
- Der Operator „+“ kann sowohl bei der numerischen Addition als auch bei der Zeichenfolgenverkettung verwendet werden.
Numerische Addition | String-Verkettung |
int a = 5; int b = 6; int summe = a + b; // Ausgabe = 11 | String zuerst = „Python“; String second = „Programmierung“; Name = Erster + Zweiter; // Ausgabe = Python-Programmierung |
- Die Operatoren &,| und ! kann für logisches und bitweises Überladen verwendet werden.
Arten von Polymorphismus in Java
Die objektorientierte Programmierung konzentriert sich auf vier Grundkonzepte, nämlich Abstraktion, Kapselung, Vererbung und Polymorphie. Polymorphismus ist die Fähigkeit, Objekte aufgrund ihrer Klasse und Datentypen unterschiedlich zu verarbeiten.
Es gibt zwei Arten von Polymorphismus in Java : Polymorphismus zur Kompilierzeit und Polymorphismus zur Laufzeit in Java . Dieser Java-Polymorphismus wird auch als statischer Polymorphismus und dynamischer Polymorphismus bezeichnet.
1. Statischer Polymorphismus (oder Kompilierzeit-Polymorphismus)
Wie die meisten anderen OOP-Programmiersprachen ermöglicht der Java-Polymorphismus die Einbindung mehrerer Methoden in eine Klasse. Die Methoden verwenden denselben Namen, aber der Parameter variiert. Dies repräsentiert den statischen Polymorphismus. Dieser Polymorphismus wird während der Compilerzeit aufgelöst und durch das Überladen der Methode erreicht. Es werden drei Kriterien vorgegeben, in denen sich die Parametersätze unterscheiden müssen:
- Die Parameternummer sollte variieren.
- Die Parametertypen sollten unterschiedlich sein.
- Unterschiedliche Reihenfolge der Parameter. Zum Beispiel, wenn eine Methode einen String und einen Long akzeptiert, während die andere Methode einen Long und einen String akzeptiert. Diese Art der Bestellung erschwert jedoch das Verständnis für die API.
Aufgrund der unterschiedlichen Parameter hat jede Methode eine andere Signatur. Der Java-Compiler hat eine Vorstellung davon, welche Methode aufgerufen wird.
Lernen Sie Softwarekurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
Beispiel für statischen Polymorphismus
Einer der Wege, wie Java statischen Polymorphismus unterstützt, ist das Überladen von Methoden. Ein Beispiel, das den Fall der Methodenüberladung bei statischem Polymorphismus zeigt, ist unten dargestellt:
Beispiel:
Klasse EinfacherRechner
{
int add(int a, int b)
{
gib a+b zurück;
}
int add(int a, int b, int c)
{
gib a+b+c zurück;
}
}
öffentliche Klasse Demo
{
public static void main(String args[])
{
SimpleCalculator obj = new SimpleCalculator();
System.out.println (obj.add (25, 25));
System.out.println (obj.add (25, 25, 30));
}
}
Ausgabe des Programms
50
80
2. Dynamischer Polymorphismus (oder Laufzeitpolymorphismus in Java)
Bei dieser Form des Polymorphismus in Java bestimmt der Compiler nicht die auszuführende Methode. Es ist die Java Virtual Machine (JVM), die den Prozess zur Laufzeit ausführt. Dynamischer Polymorphismus bezieht sich auf den Prozess, wenn ein Aufruf an einen überschriebenen Prozess zur Laufzeit aufgelöst wird. Die Referenzvariable einer Oberklasse ruft die überschriebene Methode auf. Die Methoden, die sowohl von der Unterklasse als auch von der Oberklasse implementiert werden, stellen unterschiedliche Funktionen bereit, während sie den gleichen Namen teilen.
Das Verständnis des Upcasting-Prozesses ist entscheidend, bevor Sie das Konzept des Laufzeitpolymorphismus verstehen. Upcasting bezieht sich auf den Vorgang, bei dem auf ein Objekt der untergeordneten Klasse durch eine Referenzvariable der übergeordneten Klasse verwiesen wird. Erfahren Sie mehr über Polymorphismus in PHP.
Beispiel für dynamischen Polymorphismus (oder Laufzeit)
Beispiel 1:
Es werden zwei Klassen „Bike“ und „Splendor“ erstellt, und die Klasse „Splendor“ erweitert die Klasse „Bike“ und überschreibt deren Methode „run()“. Die Methode run() wird von der Referenzvariablen der übergeordneten Klasse aufgerufen. Da die Methode der Unterklasse die Methode der übergeordneten Klasse überschreibt; Die Unterklassenmethode wird zur Laufzeit aufgerufen.
Das Programm
Klasse Fahrrad{
void run(){System.out.println("läuft");}
}
Klasse Pracht verlängert Fahrrad{
void run(){System.out.println(“30 km sicher laufen”);}
öffentlich zugänglich statisch void main(String args[]){
Bike b = new Splendor();//upcasting
b.run();
}
}
Ausgang: sicher gehen mit 60km
Beispiel 2
Es werden zwei Klassen mit den Namen „ABC“ und „XYZ“ erstellt, wobei XYZ eine untergeordnete Klasse und ABC eine übergeordnete Klasse ist. Dabei wird die Methode myMethod() der Elternklasse von der Kindklasse überschrieben. Das Objekt der untergeordneten Klasse wird der Referenz der übergeordneten Klasse zugewiesen.
Programm:
Klasse ABC{
public void meineMethode(){
System.out.println("Überschriebene Methode");
}
}
öffentliche Klasse XYZ erweitert ABC{
public void meineMethode(){
System.out.println("Überschreibende Methode");
}
public static void main(String args[]){
ABC obj = neues XYZ();
obj.myMethod();
}
}
Ausgabe
Überschreibende Methode
Fazit
Das Konzept des Polymorphismus in Java ist eines der nützlichsten Features in der objektorientierten Programmierung. Ferner erweitert die Fähigkeit, eine Methode sowohl zur statischen als auch zur Laufzeit aufzurufen, ihre Anwendbarkeit.
Die Idee hinter dem Konzept des Polymorphismus ist Flexibilität. Außerdem erleichtert die Möglichkeit, eine große Anzahl von Objekten in einer einzigen Referenzvariablen zu verarbeiten, die Codierung etwas. Daher sollte das Konzept in den täglichen Codierungsaufgaben verwendet werden und seine Wirksamkeit annehmen.
Wenn Sie mehr über Softwaretechnologie, ihre Entwicklung und die Mechanismen dahinter erfahren möchten, können Sie den von upGrad angebotenen Kurs Executive PG Program in Software Development – Specialization in Full Stack Development besuchen. Der Spezialisierungskurs ist ein 23-wöchiges Online-Programm, das über 300 Fallstudien bietet, um Ihr Wissen zu erweitern, und verfügbare Tools und Programmiersprachen, um Ihre praktischen Fähigkeiten zu verbessern. Wenn Sie weitere Fragen zum Kurs haben, schreiben Sie uns eine Nachricht. Unser Team wird Sie kontaktieren.