🤔 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.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.