L'ereditarietà in Dart

Mattepuffo's logo
L'ereditarietà in Dart

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!


Condividi

Commentami!