Als letzte Säule von OLP haben wir über Kapselung, Abstraktion und Vererbung gesprochen, und dann
gibt es noch diese vierte, die ein ziemlich hartes Wort hat, Polymorphismus.
Was bedeutet das?
Polly bedeutet viele und mehr.
Fiza bedeutet für so viele Formen.
Jetzt wissen wir, dass Methoden zu Objekten gehören, oder?
Wir verwenden das Schlüsselwort self, um auf das Objekt zu reagieren, das instanziiert wurde.
In Python bezieht sich diese Idee des Polymorphismus nun darauf, wie Objektklassen denselben Methodennamen
verwenden können.
Aber diese Metha-Namen können sich unterschiedlich verhalten, je nachdem, wie das Objekt sie nennt.
Das klingt jetzt extrem verwirrend, also schauen wir uns einen Code an.
Wir haben unseren Benutzerassistenten und Archer Classis.
Und wie ich bereits erwähnt habe, können beim Polymorphismus verschiedene Objektklassen Methodennamen teilen,
also haben wir hier einen gemeinsamen Angriff, aber jede macht je nach Attribut etwas anderes.
Zum Beispiel, wenn ich einen Zaubererangriff mache.
Also machen wir das.
Wizzard Ein-Punkt-Angriff.
Wenn ich auf Ausführen klicke, greife ich mit einer Kraft von 60 an, weil Wizzard eine besondere Bedeutung für seinen Angriff
gegen Archer hat.
Sie sind anders.
Obwohl sie aufgrund des aufrufenden Objekts dieselben Methodennamen verwenden, wird die Ausgabe
unterschiedlich sein.
Wir können hier also etwas sehr Interessantes machen, sagen wir,
ich habe Wizzard eins und dann auch Archer eins und Archer eins wird Robin.
Und Robin hat jetzt 30 Stunden.
Was ich hier tun kann, heißt sie tatsächlich auf unterschiedliche Weise, zum Beispiel
kann ich eine ganz neue Funktion namens Spielerangriff erstellen, in der Spielerangriffe einen Charakter annehmen.
Und hier können wir Charakterpunktangriff sagen.
Und jetzt, wenn ich diesen Code ausführe und sage.
Spielerangriff.
Zauberer ein.
Und ich betreibe das.
Ich greife mit einer Stärke von eins an, wenn ich einen Spielerangriff mache, habe Archer hier drin, wenn ich auf Ausführen klicke.
Sie sehen, dass dieselbe Funktion eine andere Ausgabe
liefert, obwohl wir dasselbe aufrufen, weil das Objekt, das wir an sie übergeben,
Polymorphismus ist. Sagen wir, Charakter rein und fügen wir Wizzard One und Archer One in eine Liste ein.
Und wenn ich hier drucke oder einfach Charakterpunktangriffe ausführen lassen.
Wenn ich hier auf Ausführen klicke.
Ich habe wieder zwei verschiedene Ausgaben, obwohl ich wegen der unterschiedlichen Objekte dieselbe Methode aufrufe
und dies ist ein wirklich mächtiges Konzept, richtig, weil wir dies an unsere spezifischen Bedürfnisse
anpassen können, auch wenn: Nehmen wir an, der Benutzer hatte einen Angriff.
Methode und diese Standardangriffsmethode ist, sagen wir, dass print nichts tut, weil es nur ein Benutzer ist.
Selbst wenn ich diese ausführe, sagen wir, Druckassistent eins.
Und sagen wir Punktangriff, wenn ich klicke, renne.
Es wird den ursprünglichen Angriff überschreiben, da wir diese Methode bereits in unserer Zaubererklasse
haben.
Aber sagen wir, ich wollte, dass sowohl Yuzu als auch Wizzard die Angriffsmethode ausführen. Wie kann ich das tun?
Dies ist etwas, was wir im nächsten Video ein wenig genauer untersuchen werden, aber für den Moment kann ich
von User Dot Attack sprechen.
Und gib es selbst.
Weil ich hier user als meinen Parameter akzeptiere.
Und dann habe ich Camron, User Dot Attack.
Mal sehen, was hier passiert, wenn ich auf Ausführen klicke.
Ich habe nichts zu tun und greife mit einer Kraft von 60 an.
Polymorphismus erlaubt uns also viele Formen zu haben, es ist die Fähigkeit, Methoden für diese abgeleiteten Klassen neu zu definieren, die
Wizard und Archer sind.
Und ein Objekt, das instanziiert wird, kann sich basierend auf Polymorphismus in unterschiedlicher Form auf unterschiedliche Weise verhalten.
Und das ist nützlich, weil wir unsere Klassen an unsere spezifischen Bedürfnisse anpassen können.
Aber wir müssen uns auch nicht wiederholen, falls wir so etwas wie einen Angriff von einem Benutzer innerhalb von Wizard verwenden
möchten.
Da haben Sie es also, die vier Säulen der OPIS-Kapselung.
Abstraktion.
Vererbung und schließlich Polymorphismus.
Nun, keine Menge Videos oder Bücher werden Ihnen jedoch beibringen, wann Sie was genau verwenden sollten.
Die Idee hier ist zu verstehen, dass diese Befugnisse mit OLP existieren.
Sie werden nie sagen, oh, ich muss Polymorphismus implementieren.
Nein, die meiste Zeit kodieren Sie nur mit und es kommt vor, dass Sie auf eine Weise kodieren, die
den Polymorphismus betont.
Dies ist nur die Stärke von OLP, obwohl dies große Worte sind, haben wir am Ende des
Tages gelernt, wie wir sie verwenden, um unseren Code effizient und sauber zu strukturieren.
Und das ist der springende Punkt.
Es geht darum, unseren Code zu organisieren.
Nun, einige von euch waren vielleicht etwas verwirrt, als ich diesen User-Punkt-Angriff im nächsten Video selbst durchgeführt habe, ich möchte dies
ein wenig mehr untersuchen.
Wir sehen uns dabei.