L'ereditarietà in Dart
In OOP l'ereditarietà rappresenta un meccanismo che consente di creare nuovi oggetti basati su alti oggetti già definiti.
In questo modo è possibile anche creare variabili/metodi generici che possono essere usati o sovrascritti dalla classe che eridta.
Dart support l'ereditarietà attraverso:
- extends
- with
Nel primo caso si estende una classe, nel secondo caso si eredita da un mixin.
Vediamo un esempio completo:
mixin Azioni {
int velocitaMax = 200;
void sedersi() {
print('Mi siedo');
}
}
class Mammifero {
void mangiare() {
print('Sto mangiando!');
}
}
class Persona extends Mammifero with Azioni {
String nome;
int eta;
Persona(this.nome, this.eta);
}
void main() {
final persona = Persona('matteo', 37);
print(persona.nome);
persona.mangiare();
print(persona.velocitaMax);
persona.sedersi();
}
A livello tecnico sono praticamente uguali.
La differenza sostanziale sta più a livello logico.
In genere si usa extends quando c'è una connessione logica più forte.
Una persona è un mammifero, e quindi c'è una certa correlazione.
Inoltre Dart non può estendere più classi.
Invece è consigliato with quando si vuole condividere funzioni e valori più generici.
Un mixin in sostanza è un provider di funzionalità.
Inoltre è possibile "estendere" quanti mixin vogliamo.
Enjoy!
dart class mixin extends with
Commentami!