🤔 Ismeri az öröklést?
Az öröklés lehetővé teszi számunkra, hogy új osztályokat hozzunk létre, amelyek újra felhasználják, kiterjesztik és/vagy módosítják a már meglévő osztályok viselkedését. A már létező osztályt szuperosztálynak, az általunk létrehozott új osztályt pedig származtatott osztálynak nevezzük. A Dartban csak egy szuperosztályt örökölhetünk, de az öröklés tranzitív. Ha a class Hatch
a class Car
-ből származik, és ez az osztály a class Vehicle
-ből származik, akkor a Hatch a Vehicle-ből lesz származtatva. A extends
-t használjuk a származtatott osztály létrehozásához, és a super
-t, ha a szuperosztályra akarunk hivatkozni.
Amikor class Car extends Vehicle
, a class Vehicle
-ben implementált összes tulajdonság, változó, függvény elérhető lesz a class Car
-ben.
Az is lehetséges, hogy felülírjuk a szuperosztály függvényeit.
Szóval: A extends
-t akkor használjuk, ha egy osztály specifikusabb változatát akarjuk létrehozni.
2⃣️ Implements
Tegyük fel, hogy saját Car osztályt akarunk létrehozni, anélkül, hogy a Vehicle osztály összes tulajdonságát, változóját és függvényét örökölnénk, de csak a Vehicle típust szeretnénk örökölni. Ehhez a Car osztálynak implementálnia kell a Vehicle interfészt.
A Dart lehetővé teszi több osztály vagy interfész implementálását.
✍️ Példa
Tegyük fel, hogy egy madarat és egy kacsát kell implementálnunk, mindkettő állat, de a madár csak repülni tud, a kacsa pedig repülni és úszni. Meg fogjuk ezt csinálni az eddigi ismereteinket felhasználva:
Először is, létrehozzuk a szuperosztályt és a viselkedéseket:
Most, létrehozzuk a Bird
és Duck
, megfelelő viselkedéseket implementálva:
Megjegyezzük, hogy a implements
használatával a fly
és swim
függvényeket kellett implementálnunk, ismétlődő kód! A viselkedésimplementációkat nem lehetett így örökölni. Van rá mód, hogy újra felhasználjuk ezeknek a viselkedéseknek a kódját? Igen, majd meglátjuk a következőkben!
3⃣️ Using with
A mixin egy más típusú struktúra, amely csak a with
kulcsszóval használható, és közös kódrészletek felvételére szolgál, azt mondanám, a kód újrafelhasználására.
A mixinek egy módja egy osztály kódjának újrafelhasználásának több osztályhierarchiában (dartlang.org).
Íme, a mixinek így hajtják végre az előző implementációt:
Az abstract class
-t mixin
-re cserélheted, ha szeretnéd.
A mixinek egy módja annak, hogy absztraháld és újrafelhasználd a műveletek és állapotok egy családját, ez hasonló az újrafelhasználáshoz, amit egy osztály kiterjesztéséből kapsz, de nem többszörös öröklés, továbbra is csak egy szuperosztály van. Úgy működnek, hogy a mixin implementációt a szuperosztály tetejére helyezik, hogy egy új osztályt hozzanak létre. A fenti példában egy függvényt lehet újraírni, a mixinek ezt lehetővé teszik.
✌️Köszönöm
Ez volt az első történetem a Mediumon, remélem tetszett 😃.
Meg szeretném köszönni Romain Rastel-nek a hihetetlen történetet a mixinekről, azt tanácsolom, hogy olvassátok el, hogy még többet értsetek erről a témáról.
Minden kérdés, nyugodtan tegyétek fel alább.