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

Vastaa

Sähköpostiosoitettasi ei julkaista.