🤔 Conosci l’ereditarietà?
L’ereditarietà ci permette di creare nuove classi che riutilizzano, estendono e/o modificano il comportamento di classi preesistenti. La classe preesistente è chiamata superclasse e la nuova classe che stiamo creando è chiamata classe derivata. In Dart, possiamo ereditare solo una superclasse, ma l’ereditarietà è transitiva. Se la class Hatch
è derivata dalla class Car
e questa classe è derivata dalla class Vehicle
, allora Hatch sarà derivata da Vehicle. Usate extends
per creare la classe derivata, e super
quando volete fare riferimento alla superclasse.
Quando class Car extends Vehicle
, tutte le proprietà, variabili, funzioni implementate in class Vehicle
saranno disponibili in class Car
.
È anche possibile sovrascrivere le funzioni della superclasse.
Quindi: Si usa extends
quando si vuole creare una versione più specifica di una classe.
2⃣️ Usare implements
Supponiamo di voler creare la propria classe Car, senza ereditare tutte le proprietà, variabili e funzioni della classe Vehicle, ma si vuole ereditare solo il tipo Vehicle. Per fare questo, la classe Car deve implementare l’interfaccia Vehicle.
Dart ti permette di implementare più classi o interfacce.
✍️ Esempio
Immagina di dover implementare un uccello e una papera, entrambi sono animali, ma l’uccello può solo volare e la papera può volare e nuotare. Lo faremo usando quello che sappiamo finora.
Prima, creeremo la superclasse e i comportamenti:
Ora, creeremo Bird
e Duck
, implementando i comportamenti appropriati:
Nota, che usando implements
abbiamo dovuto implementare fly
e swim
funzioni, ripetendo il codice! Non era possibile ereditare le implementazioni del comportamento in questo modo. C’è un modo per riutilizzare il codice di questi comportamenti? Sì, lo vedremo dopo!
3⃣️ Usando con
Mixin è un tipo diverso di struttura, che può essere usato solo con la parola chiave with
e viene usato per includere frammenti di codice comune, direi, riutilizzare il codice.
Mixin sono un modo per riutilizzare il codice di una classe in gerarchie di classi multiple (dartlang.org).
Ecco come i mixin eseguono l’implementazione precedente:
Si può sostituire abstract class
a mixin
se si preferisce.
I mixin sono un modo per astrarre e riutilizzare una famiglia di operazioni e stati, è simile al riutilizzo che si ottiene estendendo una classe, ma non sono eredità multiple, esiste ancora una sola superclasse. Funzionano mettendo l’implementazione del mixin sopra la superclasse per creare una nuova classe. Nell’esempio sopra, è possibile riscrivere una funzione, i mixin permettono questo.
✌️ Grazie
Questa è stata la mia prima storia su Medium, spero ti sia piaciuta 😃.
Vorrei ringraziare Romain Rastel per l’incredibile storia sui mixin, vi consiglio di leggere per capire ancora di più su questo argomento.
Qualsiasi domanda, sentitevi liberi di chiedere qui sotto.