🤔 Tunnetko periytymisen?
Periytymisen avulla voimme luoda uusia luokkia, jotka käyttävät uudelleen, laajentavat ja/tai muokkaavat jo olemassa olevien luokkien käyttäytymistä. Ennalta olemassa olevaa luokkaa kutsutaan yläluokaksi ja uutta luomaamme luokkaa kutsutaan johdetuksi luokaksi. Dartissa voimme periä vain yhden yläluokan, mutta periytyminen on transitiivista. Jos class Hatch
on johdettu class Car
:stä ja tämä luokka on johdettu class Vehicle
:stä, niin Hatch on johdettu Vehicleista. Käytä extends
luodaksesi johdetun luokan ja super
kun haluat viitata superluokkaan.
Kun class Car extends Vehicle
, kaikki ominaisuudet, muuttujat, funktiot, jotka on toteutettu class Vehicle
:ssä, ovat käytettävissä class Car
:ssä.
Mahdollista on myös superluokan funktioiden ylikirjoittaminen.
Selv: Käytät extends
, kun haluat luoda luokasta tarkemman version.
2⃣️ Using implements
Esitetään, että haluat luoda oman Car-luokan perimättä kaikkia Vehicle-luokan ominaisuuksia, muuttujia ja funktioita, mutta haluat periä vain Vehicle-tyypin. Tätä varten Car-luokan on toteutettava Vehicle-rajapinta.
Dart mahdollistaa useiden luokkien tai rajapintojen toteuttamisen.
✍️ Esimerkki
Kuvittele, että sinun on toteutettava lintu ja ankka, jotka molemmat ovat eläimiä, mutta lintu osaa vain lentää ja ankka osaa lentää ja uida. Toteutamme tämän käyttämällä sitä, mitä tiedämme tähän mennessä.
Aluksi luomme superclassin ja käyttäytymismuodot:
Nyt luomme Bird
ja Duck
, jotka toteuttavat oikeat käyttäytymismuodot:
Huomaa, että implements
:n avulla jouduimme toteuttamaan funktiot fly
ja swim
, eli koodia toistetaan! Käyttäytymistoteutuksia ei ollut mahdollista periä tällä tavalla. Onko olemassa jokin tapa käyttää uudelleen näiden käyttäytymismallien koodia? Kyllä, näemme seuraavaksi!
3⃣️ Using with
Mixin on erityyppinen rakenne, jota voidaan käyttää vain avainsanalla with
ja sitä käytetään yhteisten koodinpätkien sisällyttämiseen, sanoisin, koodin uudelleenkäyttöön.
Mixinit ovat keino käyttää luokan koodia uudelleen useammassa luokkahierarkiassa (dartlang.org).
Tässä on, miten mixins suorittaa edellisen toteutuksen:
Voit halutessasi korvata abstract class
mixin
:llä, jos haluat.
Mixins ovat keino abstrahoida ja uudelleenkäyttää operaatioiden ja tilojen perhettä, se on samanlaista uudelleenkäyttöä kuin mitä saat luokan laajentamisesta, mutta se ei ole moninkertaista periytymistä, siellä on edelleenkin vain yksi superclass. Ne toimivat laittamalla mixin-toteutus yläluokan päälle luodakseen uuden luokan. Yllä olevassa esimerkissä on mahdollista kirjoittaa funktio uudelleen, mixins mahdollistaa tämän.
✌️Kiitos
Tämä oli ensimmäinen juttuni Mediumissa, toivottavasti pidit 😃.
Haluan kiittää Romain Rastelia uskomattomasta tarinasta mixineistä, suosittelen lukemaan ymmärtääksesi vielä enemmän tästä aiheesta.
Mikäli sinulla on kysyttävää, kysy rohkeasti alla.