Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

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:

  1. Methodenüberschreibung
  2. Methodenüberladung
  3. 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

  1. Java-Operatoren
  2. Java-Schnittstelle
  3. Java-Versuch-mit-Ressourcen
  4. Java-Anmerkungen
  5. Java-Anmerkungstypen
  6. String Length() Methode in Java:So finden Sie mit Beispiel
  7. Java String indexOf() Methode mit Substring &Beispielen
  8. Java String charAt() Methode mit Beispiel
  9. Java-String-EndsWith()-Methode mit Beispiel
  10. Java String replace(), replaceAll() und replaceFirst() Methode