Java-Polymorphismus
Java-Polymorphismus
In diesem Tutorial lernen wir den Java-Polymorphismus und seine Implementierung anhand von Beispielen kennen.
Polymorphismus ist ein wichtiges Konzept der objektorientierten Programmierung. Es bedeutet einfach mehr als eine Form.
Das heißt, dieselbe Entität (Methode oder Operator oder Objekt) kann verschiedene Operationen in verschiedenen Szenarien ausführen.
Beispiel:Java-Polymorphismus
class Polygon {
// method to render a shape
public void render() {
System.out.println("Rendering Polygon...");
}
}
class Square extends Polygon {
// renders Square
public void render() {
System.out.println("Rendering Square...");
}
}
class Circle extends Polygon {
// renders circle
public void render() {
System.out.println("Rendering Circle...");
}
}
class Main {
public static void main(String[] args) {
// create an object of Square
Square s1 = new Square();
s1.render();
// create an object of Circle
Circle c1 = new Circle();
c1.render();
}
}
Ausgabe
Rendering Square... Rendering Circle...
Im obigen Beispiel haben wir eine Oberklasse erstellt:Polygon und zwei Unterklassen:Square und Kreis . Beachten Sie die Verwendung von render()
Methode.
Der Hauptzweck der render()
Die Methode besteht darin, die Form zu rendern. Der Vorgang zum Rendern eines Quadrats ist jedoch anders als der Vorgang zum Rendern eines Kreises.
Daher die render()
Methode verhält sich in verschiedenen Klassen unterschiedlich. Oder wir können render()
sagen ist polymorph.
Warum Polymorphismus?
Polymorphismus ermöglicht es uns, konsistenten Code zu erstellen. Im vorherigen Beispiel können wir auch andere Methoden erstellen:renderSquare()
und renderCircle()
um Quadrat zu rendern und Kreis .
Das wird perfekt funktionieren. Für jede Form müssen wir jedoch unterschiedliche Methoden erstellen. Dadurch wird unser Code inkonsistent.
Um dies zu lösen, ermöglicht Polymorphismus in Java die Erstellung einer einzigen Methode render()
das sich für verschiedene Shapes unterschiedlich verhält.
Hinweis :Die print()
Methode ist auch ein Beispiel für Polymorphismus. Es wird verwendet, um Werte verschiedener Typen wie char
zu drucken , int
, string
usw.
Wir können Polymorphismus in Java auf folgende Weise erreichen:
- Methodenüberschreibung
- Methodenüberladung
- Operator-Überladung
Java-Methodenüberschreibung
Bei der Vererbung in Java, wenn dieselbe Methode sowohl in der Oberklasse als auch in der Unterklasse vorhanden ist. Dann überschreibt die Methode in der Unterklasse dieselbe Methode in der Oberklasse. Dies wird Methodenüberschreibung genannt.
In diesem Fall führt dieselbe Methode eine Operation in der Oberklasse und eine andere Operation in der Unterklasse aus. Zum Beispiel
Beispiel 1:Polymorphismus mit Methodenüberschreibung
class Language {
public void displayInfo() {
System.out.println("Common English Language");
}
}
class Java extends Language {
@Override
public void displayInfo() {
System.out.println("Java Programming Language");
}
}
class Main {
public static void main(String[] args) {
// create an object of Java class
Java j1 = new Java();
j1.displayInfo();
// create an object of Language class
Language l1 = new Language();
l1.displayInfo();
}
}
Ausgabe :
Java Programming Language Common English Language
Im obigen Beispiel haben wir eine Superklasse mit dem Namen Language erstellt und eine Unterklasse namens Java . Hier die Methode displayInfo()
ist in beiden Sprachen vorhanden und Java .
Die Verwendung von displayInfo()
ist, die Informationen zu drucken. Es werden jedoch andere Informationen in Sprache gedruckt und Java .
Basierend auf dem Objekt, das zum Aufrufen der Methode verwendet wurde, werden die entsprechenden Informationen ausgegeben.
Hinweis :Die aufgerufene Methode wird während der Ausführung des Programms bestimmt. Daher ist das Überschreiben von Methoden ein Laufzeitpolymorphismus .
2. Überladen von Java-Methoden
In einer Java-Klasse können wir Methoden mit demselben Namen erstellen, wenn sie sich in Parametern unterscheiden. Zum Beispiel
void func() { ... }
void func(int a) { ... }
float func(double a) { ... }
float func(int a, float b) { ... }
Dies wird in Java als Methodenüberladung bezeichnet. Hier führt dieselbe Methode verschiedene Operationen basierend auf dem Parameter aus.
Beispiel 3:Polymorphismus mit Methodenüberladung
class Pattern {
// method without parameter
public void display() {
for (int i = 0; i < 10; i++) {
System.out.print("*");
}
}
// method with single parameter
public void display(char symbol) {
for (int i = 0; i < 10; i++) {
System.out.print(symbol);
}
}
}
class Main {
public static void main(String[] args) {
Pattern d1 = new Pattern();
// call method without any argument
d1.display();
System.out.println("\n");
// call method with a single argument
d1.display('#');
}
}
Ausgabe :
********** ##########
Im obigen Beispiel haben wir eine Klasse namens Pattern erstellt . Die Klasse enthält eine Methode namens display()
das ist überladen.
// method with no arguments
display() {...}
// method with a single char type argument
display(char symbol) {...}
Hier die Hauptfunktion von display()
ist, das Muster zu drucken. Basierend auf den übergebenen Argumenten führt die Methode jedoch andere Operationen aus:
- druckt ein Muster von
*
, wenn kein Argument übergeben wird oder - druckt Muster des Parameters, wenn ein einzelner
char
Typargument wird übergeben.
Hinweis :Die aufgerufene Methode wird vom Compiler bestimmt. Daher ist es auch als Kompilierzeit-Polymorphismus bekannt.
3. Überladen von Java-Operatoren
Einige Operatoren in Java verhalten sich bei unterschiedlichen Operanden unterschiedlich. Zum Beispiel
+
-Operator ist überladen, um sowohl numerische Additionen als auch Zeichenfolgenverkettungen auszuführen, und- Operatoren wie
&
,|
, und!
sind für logische und bitweise Operationen überladen.
Sehen wir uns an, wie wir durch Überladen von Operatoren Polymorphismus erreichen können.
Die +
-Operator wird verwendet, um zwei Entitäten hinzuzufügen. In Java ist jedoch der +
Operator führt zwei Operationen durch.
1. Wenn +
mit Zahlen (Ganzzahlen und Fließkommazahlen) verwendet wird, führt es mathematische Additionen durch. Zum Beispiel
int a = 5;
int b = 6;
// + with numbers
int sum = a + b; // Output = 11
2. Wenn wir den +
verwenden -Operator mit Strings, führt er eine String-Verkettung durch (verbindet zwei Strings). Zum Beispiel
String first = "Java ";
String second = "Programming";
// + with strings
name = first + second; // Output = Java Programming
Hier sehen wir, dass der +
-Operator ist in Java überladen, um zwei Operationen auszuführen:Addition und Verkettung .
Hinweis Hinweis:In Sprachen wie C++ können wir Operatoren so definieren, dass sie für verschiedene Operanden unterschiedlich funktionieren. Java unterstützt jedoch kein benutzerdefiniertes Überladen von Operatoren.
Polymorphe Variablen
Eine Variable heißt polymorph, wenn sie sich unter verschiedenen Bedingungen auf unterschiedliche Werte bezieht.
Objektvariablen (Instanzvariablen) repräsentieren das Verhalten polymorpher Variablen in Java. Dies liegt daran, dass Objektvariablen einer Klasse sowohl auf Objekte ihrer Klasse als auch auf Objekte ihrer Unterklassen verweisen können.
Beispiel:Polymorphe Variablen
class ProgrammingLanguage {
public void display() {
System.out.println("I am Programming Language.");
}
}
class Java extends ProgrammingLanguage {
@Override
public void display() {
System.out.println("I am Object-Oriented Programming Language.");
}
}
class Main {
public static void main(String[] args) {
// declare an object variable
ProgrammingLanguage pl;
// create object of ProgrammingLanguage
pl = new ProgrammingLanguage();
pl.display();
// create object of Java class
pl = new Java();
pl.display();
}
}
Ausgabe :
I am Programming Language. I am Object-Oriented Programming Language.
Im obigen Beispiel haben wir eine Objektvariable pl erstellt der ProgrammingLanguage Klasse. Hier, pl ist eine polymorphe Variable. Das liegt daran,
- In Anweisung
pl = new ProgrammingLanguage()
, pl beziehen sich auf das Objekt der ProgrammingLanguage Klasse. - Und in Anweisung
pl = new Java()
, pl beziehen sich auf das Objekt von Java Klasse.
Dies ist ein Beispiel für Upcasting in Java.
Java
- Java-Operatoren
- Java-Schnittstelle
- Java-Versuch-mit-Ressourcen
- Java-Anmerkungen
- Java-Anmerkungstypen
- String Length() Methode in Java:So finden Sie mit Beispiel
- Java String indexOf() Methode mit Substring &Beispielen
- Java String charAt() Methode mit Beispiel
- Java-String-EndsWith()-Methode mit Beispiel
- Java String replace(), replaceAll() und replaceFirst() Methode