🤔 Kennst du Vererbung?
Vererbung erlaubt es uns, neue Klassen zu erstellen, die das Verhalten bereits existierender Klassen wiederverwenden, erweitern und/oder modifizieren. Die vorbestehende Klasse wird Superklasse genannt und die neue Klasse, die wir erstellen, wird abgeleitete Klasse genannt. In Dart können wir nur eine Superklasse erben, aber die Vererbung ist transitiv. Wenn class Hatch
von class Car
abgeleitet ist und diese Klasse von class Vehicle
abgeleitet ist, dann wird Hatch von Vehicle abgeleitet sein. Verwenden Sie extends
, um eine abgeleitete Klasse zu erstellen, und super
, wenn Sie auf die Superklasse verweisen wollen.
Wenn class Car extends Vehicle
, werden alle Eigenschaften, Variablen, Funktionen, die in class Vehicle
implementiert sind, in class Car
verfügbar sein.
Auch ist es möglich, Superklassenfunktionen zu überschreiben.
So: Sie verwenden extends
, wenn Sie eine spezifischere Version einer Klasse erstellen wollen.
2⃣️ Using implements
Angenommen, Sie wollen eine eigene Klasse Car erstellen, ohne alle Eigenschaften, Variablen und Funktionen der Klasse Vehicle zu erben, sondern nur den Typ Vehicle. Dazu muss die Klasse Car die Schnittstelle Vehicle implementieren.
Dart erlaubt es Ihnen, mehrere Klassen oder Schnittstellen zu implementieren.
✍️ Beispiel
Stellen Sie sich vor, Sie müssen einen Vogel und eine Ente implementieren, beide sind Tiere, aber der Vogel kann nur fliegen und die Ente kann fliegen und schwimmen. Wir machen das mit dem, was wir bisher wissen.
Zuerst erstellen wir die Superklasse und die Verhaltensweisen:
Nun erstellen wir Bird
und Duck
und implementieren die richtigen Verhaltensweisen:
Beachte, dass wir mit implements
die Funktionen fly
und swim
implementieren mussten, also Code wiederholen! Es war nicht möglich, die Verhaltensimplementierungen auf diese Weise zu vererben. Gibt es eine Möglichkeit, den Code für diese Verhaltensweisen wiederzuverwenden? Ja, das werden wir gleich sehen!
3⃣️ Mit
Mixin ist eine andere Art von Struktur, die nur mit dem Schlüsselwort with
verwendet werden kann und dazu dient, gemeinsame Codeschnipsel einzubinden, ich würde sagen, den Code wiederzuverwenden.
Mixins sind eine Möglichkeit, den Code einer Klasse in mehreren Klassenhierarchien (dartlang.org) wiederzuverwenden.
Hier ist, wie Mixins die vorherige Implementierung durchführen:
Sie können abstract class
durch mixin
ersetzen, wenn Sie es bevorzugen.
Mixins sind ein Weg, eine Familie von Operationen und Zuständen zu abstrahieren und wiederzuverwenden, es ist ähnlich wie die Wiederverwendung, die man durch die Erweiterung einer Klasse erhält, aber es sind nicht mehrere Vererbungen, es gibt immer noch nur eine Oberklasse. Sie funktionieren, indem die Mixin-Implementierung auf die Superklasse gelegt wird, um eine neue Klasse zu erstellen. Im obigen Beispiel ist es möglich, eine Funktion umzuschreiben, Mixins erlauben dies.
✌️Danke
Das war mein erster Beitrag auf Medium, ich hoffe er hat euch gefallen 😃.
Ich möchte Romain Rastel für die unglaubliche Geschichte über Mixins danken, ich empfehle euch zu lesen, um noch mehr über dieses Thema zu verstehen.
Wenn ihr Fragen habt, könnt ihr sie unten stellen.