🤔 Cunoașteți moștenirea?
Moștenirea ne permite să creăm clase noi care reutilizează, extind și/sau modifică comportamentul claselor preexistente. Clasa preexistentă se numește superclasă, iar noua clasă pe care o creăm se numește clasă derivată. În Dart, putem moșteni doar o singură superclasă, dar moștenirea este tranzitivă. Dacă class Hatch
este derivată din class Car
, iar această clasă este derivată din class Vehicle
, atunci Hatch va fi derivată din Vehicle. Folosiți extends
pentru a crea clasa derivată și super
atunci când doriți să vă referiți la superclasă.
Când class Car extends Vehicle
, toate proprietățile, variabilele, funcțiile implementate în class Vehicle
vor fi disponibile în class Car
.
De asemenea, este posibilă suprascrierea funcțiilor superclasei.
Așa că: Folosiți extends
când doriți să creați o versiune mai specifică a unei clase.
2⃣️ Utilizarea implementelor
Să presupunem că doriți să vă creați propria clasă Mașină, fără a moșteni toate proprietățile, variabilele și funcțiile clasei Vehicul, dar doriți să moșteniți doar tipul Vehicul. Pentru a face acest lucru, clasa Mașină trebuie să implementeze interfața Vehicul.
Dart vă permite să implementați mai multe clase sau interfețe.
✍️ Exemplu
Imaginați-vă că trebuie să implementați o pasăre și o rață, ambele sunt animale, dar pasărea poate doar să zboare, iar rața poate zbura și înota. Vom face acest lucru folosind ceea ce știm până acum.
În primul rând, vom crea superclasa și comportamentele:
Acum, vom crea Bird
și Duck
, implementând comportamentele corespunzătoare:
Rețineți, că folosind implements
a trebuit să implementăm funcțiile fly
și swim
, repetând codul! Nu a fost posibil să moștenim în acest fel implementările comportamentelor. Există o modalitate de a refolosi codul pentru aceste comportamente? Da, vom vedea în continuare!
3⃣️ Using with
Mixin este un alt tip de structură, care poate fi folosit doar cu cuvântul cheie with
și este folosit pentru a include fragmente de cod comune, aș spune, pentru a reutiliza codul.
Mixinurile sunt o modalitate de reutilizare a codului unei clase în mai multe ierarhii de clase (dartlang.org).
Iată cum realizează mixinii implementarea anterioară:
Puteți înlocui abstract class
cu mixin
dacă preferați.
Mixinii sunt o modalitate de a abstractiza și reutiliza o familie de operații și de stare, este similară cu reutilizarea pe care o obțineți din extinderea unei clase, dar nu este vorba de moșteniri multiple, există în continuare o singură superclasă. Ele funcționează prin plasarea implementării mixin-ului deasupra superclasei pentru a crea o nouă clasă. În exemplul de mai sus, este posibil să rescrieți o funcție, mixinele permit acest lucru.
✌️Mulțumesc
Aceasta a fost prima mea poveste pe Medium, sper că v-a plăcut 😃.
Am dori să-i mulțumesc lui Romain Rastel pentru povestea incredibilă despre mixins, vă sfătuiesc să citiți pentru a înțelege și mai mult despre acest subiect.
Cu orice întrebare, nu ezitați să o puneți mai jos.