Implementa v / s Estende v / s con le parole chiave In Dart

In questo post, andremo copertura casi d’uso per implementa, estende e con le parole chiave. Implementa v / s Estende v / s con le parole chiave in Dart.

Introduzione

Se stai sviluppando un’applicazione Flutter, dovresti aver visto molti casi d’uso per implementa, estende e con parole chiave. Per qualcuno che non ha mai lavorato con Dart prima, la differenza tra queste parole chiave non è evidente.

In questo post, andremo in profondità su queste parole chiave per espandere la nostra comprensione di Flutter e Dart.

Implements Serve a forzare il comportamento tramite Interface

In OOP, un’interfaccia è qualcosa che impone la classe deriving per implementare un set list di campi e metodi pubblici.

Ma a differenza di altri linguaggi di programmazione tradizionali come c# e JAVA, Dart non ha tipi di interfaccia espliciti. Ogni classe, per impostazione predefinita, definisce la propria interfaccia composta da campi e metodi pubblici. Quindi, ogni classe può fungere da interfaccia in Dart.

Usiamo la parola chiave implements per implementare un’interfaccia. Inoltre, una classe può implementare più interfacce.

Dart Esempio 1 Implementa

Nell’esempio di cui sopra, classe D implementa le classi A, B e C, e pertanto deve implementare i metodi pubblici e campi di tali classi.

Inoltre, poiché Dart non ha interfacce esplicite, usiamo la classe astratta come interfaccia.

abstract class X { doX();} class Y implements X { @override doX() { // TODO: implement doX return null; }}

Extends è per la condivisione del comportamento tramite ereditarietà

In OOP, l’ereditarietà implica la condivisione del comportamento tra le classi. Non possiamo condividere le funzionalità con un’interfaccia. Quindi, quando implementiamo una classe, non possiamo condividere il suo comportamento.

Dart Esempio si Estende

Nell’esempio di cui sopra, si può vedere che la classe B ha bisogno di fornire il proprio implementazione di doA() metodo di come il comportamento non è condivisa.

Se si desidera condividere il comportamento tra queste due classi, è necessario utilizzare la parola chiave extends.

class A { doA() { print('A'); }}class B extends A { }main() { var b = B(); b.doA();}

Nell’esempio precedente, poiché B estende A, è possibile chiamare il metodo doA() direttamente dall’oggetto B.

A differenza dell’implementazione di più interfacce, Dart supporta solo l’ereditarietà singola. Quindi, non è possibile estendere da più classi.

class A { doA() { print('A'); }}class B { doB() { print('B'); }}// Not Allowed!class C extends A, B {}

With Is For Mixin

In OOP, un mixin è una classe che contiene metodi per l’uso da parte di altre classi. A differenza dell’approccio di interfaccia e ereditarietà, un mixin non deve essere la classe genitore di quelle altre classi.

Quindi un mixin non impone restrizioni di utilizzo né forza restrizioni di tipo.

Di solito inserirai funzioni comuni all’interno di un mixin. In Dart, facciamo uso del mixin utilizzando la parola chiave con.

Dart Esempio Con

Come mostrato nell’esempio precedente, l’implementazione dei campi mixin può essere sovrascritta se necessario. Inoltre, una classe può utilizzare più mixin.

Poche altre cose da notare su Mixin

Usando una classe come Mixin

In Dart, una classe può anche essere usata come mixin se la classe è senza costruttori. Ad esempio, il codice seguente è valido.

class D { doD() { print('d'); }}class E with D {}main() { var e = E(); e.doD();}

Ma questo qui sotto non è valido perché la classe D dichiara un costruttore.

class D { D() { } doD() { print('d'); }}class E with D {}

Applicare il Mixin per tipi specifici

È anche possibile applicare un mixin per essere utilizzabile solo per determinate classi di tipi utilizzando la parola chiave the on quando si definisce il mixin.

mixin Z on D { doZ() { }}class D { doD() { print('d'); }}//Can't do this!class E with Z {}//Can do this!class F extends D with Z {}

Conclusione

In questo post abbiamo appreso i casi d’uso per implementa, estende e con le parole chiave durante lo sviluppo di applicazioni Flutter / Dart.

Implementa v/s Estende v/s Con

Per riassumere l’uso:

  • Implementa per far rispettare i comportamenti.
  • Si estende per la condivisione di comportamenti di singola classe.
  • Mixins per la condivisione di comportamenti da più tipi riutilizzabili.

Per saperne di più:

  • Dart Language Caratteristiche
  • Imparare Flutter

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.