JavaRush /Java-Blog /Random-DE /Praxis der Verwendung von Polymorphismus

Praxis der Verwendung von Polymorphismus

Veröffentlicht in der Gruppe Random-DE
Hallo! Heute beenden wir eine Vortragsreihe über die Prinzipien von OOP . In dieser Lektion werden wir über Polymorphismus sprechen. Praxis der Verwendung von Polymorphismus – 1Polymorphismus ist die Fähigkeit, mehrere Typen so zu behandeln, als wären sie derselbe Typ. In diesem Fall ist das Verhalten von Objekten unterschiedlich, je nachdem, zu welchem ​​Typ sie gehören. Schauen wir uns diese Aussage genauer an. Beginnen wir mit dem ersten Teil: „Die Fähigkeit, mit mehreren Typen zu arbeiten, als wären sie derselbe Typ.“ Wie können verschiedene Typen ein und dasselbe sein? Klingt etwas seltsam :/ Eigentlich ist es einfach. Diese Situation entsteht beispielsweise bei der normalen Nutzung der Erbschaft. Mal sehen, wie es funktioniert. Nehmen wir an, wir haben eine einfache übergeordnete Klasse Catmit einer einzigen Methode run()– „run“:
public class Cat {

   public void run() {
       System.out.println("Бег!");
   }
}
Erstellen wir nun drei Klassen, die von erben Cat: Lion, Tigerund Cheetah, was Löwe, Tiger und Gepard bedeutet.
public class Lion extends Cat {

   @Override
   public void run() {
       System.out.println("Лев бежит со Geschwindigkeitю 80 км/ч");
   }
}

public class Tiger extends Cat {

   @Override
   public void run() {
       System.out.println("Тигр бежит со Geschwindigkeitю 60 км/ч");
   }
}

public class Cheetah extends Cat {

   @Override
   public void run() {
       System.out.println("Гепард бежит со Geschwindigkeitю до 120 км/ч");
   }
}
Wir haben also 3 Klassen. Lassen Sie uns eine Situation simulieren, in der wir mit ihnen arbeiten können, als wären sie dieselbe Klasse. Stellen wir uns vor, eine unserer Katzen ist krank und braucht die Hilfe von Dr. Aibolit. Versuchen wir, eine Klasse zu erstellen Aibolit, die Löwen, Tiger und Geparden behandeln kann.
public class Aibolit {

   public void healLion(Lion lion) {

       System.out.println("Лев здоров!");
   }

   public void healTiger(Tiger tiger) {

       System.out.println("Тигр здоров!");
   }

   public void healCheetah(Cheetah cheetah) {

       System.out.println("Гепард здоров!");
   }
}
Es scheint, dass das Problem gelöst ist – die Klasse ist geschrieben und einsatzbereit. Aber was machen wir, wenn wir unser Programm erweitern wollen? Jetzt gibt es nur noch drei Arten: Löwen, Tiger und Geparden. Aber es gibt mehr als 40 Katzenarten auf der Welt. Stellen Sie sich vor, was passieren würde, wenn wir dem Programm separate Kurse für Pallas-Katzen, Jaguare, Maine-Coon-Katzen, Hauskatzen und alle anderen hinzufügen würden. Praxis der Verwendung von Polymorphismus - 2Das Programm selbst wird natürlich funktionieren, aber die Klasse Aibolitmuss ständig neue Methoden zur Behandlung jedes Katzentyps hinzufügen und wird dadurch auf beispiellose Größen anwachsen. Hier kommt die Eigenschaft des Polymorphismus ins Spiel – „die Fähigkeit, mit mehreren Typen zu arbeiten, als wären sie derselbe Typ.“ Wir müssen nicht unzählige Methoden entwickeln, die das Gleiche bewirken – die Katze behandeln. Eine Methode reicht für alle Fälle gleichzeitig aus:
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
   }
}
Wir können sowohl Objekte als auch Objekte an die Methode healCat()übergeben – sie sind alle : LionTigerCheetahCat
public class Main {

   public static void main(String[] args) {

       Aibolit aibolit = new Aibolit();

       Lion simba = new Lion();
       Tiger sherekhan = new Tiger();
       Cheetah chester = new Cheetah();

       aibolit.healCat(simba);
       aibolit.healCat(sherekhan);
       aibolit.healCat(chester);
   }
}
Konsolenausgabe:

Пациент здоров!
Пациент здоров!
Пациент здоров!
Auf diese Weise Айболитkann unsere Klasse mit verschiedenen Typen arbeiten, als wären sie derselbe Typ. Kommen wir nun zum zweiten Teil: „In diesem Fall wird das Verhalten von Objekten unterschiedlich sein, je nachdem, zu welchem ​​Typ sie gehören.“ Auch hier ist alles einfach. In der Natur laufen alle Katzen unterschiedlich. Zumindest ihre Laufgeschwindigkeit unterscheidet sich. Unter unseren drei Haustieren ist der Gepard der schnellste, während Tiger und Löwe langsamer laufen. Das heißt, ihr Verhalten ist unterschiedlich. Polymorphismus gibt uns nicht nur die Möglichkeit, verschiedene Typen als einen zu verwenden. Gleichzeitig ermöglicht es uns, ihre Unterschiede nicht zu vergessen und das für jeden von ihnen spezifische Verhalten zu bewahren. Dies lässt sich anhand dieses Beispiels nachvollziehen. Nehmen wir an, dass unsere Katzen nach einer erfolgreichen Genesung beschlossen haben, zum Feiern ein wenig herumzulaufen. Fügen wir dies zu unserer Klasse hinzu Aibolit:
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
       cat.run();
   }
}
Versuchen wir, denselben Code auszuführen, um drei Tiere zu behandeln:
public static void main(String[] args) {

   Aibolit aibolit = new Aibolit();

   Lion simba = new Lion();
   Tiger sherekhan = new Tiger();
   Cheetah chester = new Cheetah();

   aibolit.healCat(simba);
   aibolit.healCat(sherekhan);
   aibolit.healCat(chester);
}
Und so wird das Ergebnis aussehen:

Пациент здоров!
Лев бежит со Geschwindigkeitю 80 км/ч
Пациент здоров!
Тигр бежит со Geschwindigkeitю 60 км/ч
Пациент здоров!
Гепард бежит со Geschwindigkeitю до 120 км/ч
Hier sehen wir deutlich, dass das spezifische Verhalten unserer Objekte erhalten blieb, obwohl wir alle drei Tiere an eine Methode übergeben und jedes von ihnen zu „verallgemeinert“ haben Cat. Dank Polymorphismus merkt sich Java perfekt, dass es sich dabei nicht nur um drei Katzen handelt, sondern nämlich um einen Löwen, einen Tiger und einen Geparden, die unterschiedlich laufen. Dies ist der Hauptvorteil der Verwendung von Polymorphismus – Flexibilität . Wenn wir Funktionen schaffen müssen, die vielen Arten gemeinsam sind, verwandeln sich Löwen, Tiger und Geparden einfach in „Katzen“. Alle Tiere sind unterschiedlich, aber in manchen Situationen ist eine Katze eine Katze, egal zu welcher Art sie gehört :) Hier ist die Videobestätigung für Sie.
Wenn diese „Verallgemeinerung“ nicht erforderlich ist und wir im Gegenteil ein unterschiedliches Verhalten der Arten benötigen, verhält sich jede Art anders. Dank Polymorphismus erstellen Sie eine einzige Schnittstelle (Methodensatz) für eine Vielzahl von Klassen. Dadurch wird die Komplexität von Programmen reduziert. Selbst wenn wir das Programm auf 40 Katzentypen erweitern würden, hätten wir immer noch die einfachste mögliche Schnittstelle – eine Methode run()für alle 40 Katzen.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION