Implements v / s Extends v /s Avec des mots-clés Dans Dart

Dans cet article, nous allons couvrir les cas d’utilisation pour implements, extends et avec des mots-clés. Implémente v / s Étend v / s Avec des mots clés en fléchette.

Introduction

Si vous développez une application Flutter, vous devriez avoir vu beaucoup de cas d’utilisation pour les implémentations, les extensions et avec des mots clés. Pour quelqu’un qui n’a jamais travaillé avec Dart auparavant, la différence entre ces mots clés n’est pas évidente.

Dans cet article, nous allons approfondir ces mots clés pour élargir notre compréhension du Flutter et de la fléchette.

Implements Sert à Forcer le comportement Via l’interface

Dans la POO, une interface est quelque chose qui oblige la classe dérivante à implémenter une liste de champs et de méthodes publics.

Mais contrairement à d’autres langages de programmation traditionnels comme C # et JAVA, Dart n’a pas de types d’interface explicites. Chaque classe, par défaut, définit sa propre interface composée de champs et de méthodes publics. Ainsi, chaque classe peut agir comme une interface dans Dart.

Nous utilisons le mot clé implements pour implémenter une interface. En outre, une classe peut implémenter plusieurs interfaces.

Dart Exemple 1 Implémente

Dans l’exemple ci-dessus, la classe D implémente les classes A, B et C, elle doit donc implémenter les méthodes et champs publics de ces classes.

De plus, puisque Dart n’a pas d’interfaces explicites, nous utilisons la classe abstraite comme interface.

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

Extends Sert À Partager Le Comportement Via l’héritage

En POO, l’héritage implique le partage du comportement entre les classes. Nous ne pouvons pas partager de fonctionnalités avec une interface. Ainsi, lorsque nous implémentons une classe, nous ne pouvons pas partager son comportement.

L’exemple de fléchettes s’étend

Dans l’exemple ci-dessus, vous pouvez voir que la classe B doit fournir sa propre implémentation de la méthode doA() comme le comportement n’est pas partagé.

Si vous souhaitez partager le comportement entre ces deux classes, vous devez utiliser le mot clé extends.

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

Dans l’exemple ci-dessus, puisque B étend A, vous pouvez appeler la méthode doA() directement à partir de l’objet de B.

Contrairement à l’implémentation de plusieurs interfaces, Dart ne prend en charge qu’un seul héritage. Ainsi, vous ne pouvez pas vous étendre à partir de plusieurs classes.

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

Avec Is For Mixin

En POO, un mixin est une classe qui contient des méthodes à utiliser par d’autres classes. Contrairement à l’approche d’interface et d’héritage, un mixin ne doit pas nécessairement être la classe parent de ces autres classes.

Ainsi, un mixin n’impose aucune restriction d’utilisation ni ne force la restriction de type.

Vous mettrez généralement des fonctions communes dans un mixin. Dans Dart, nous utilisons le mixin en utilisant le mot clé with.

Exemple de fléchettes Avec

Comme indiqué dans l’exemple ci-dessus, l’implémentation des champs mixin peut être remplacée si nécessaire. De plus, une classe peut utiliser plusieurs mixins.

Quelques Autres Choses À Noter Sur Mixin

En Utilisant Une classe Comme Mixin

Dans Dart, une classe peut également être utilisée comme mixin si la classe est sans constructeur. Par exemple, le code ci-dessous est valide.

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

Mais celui ci-dessous n’est pas valide car la classe D déclare un constructeur.

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

Appliquer Mixin Pour des Types spécifiques

Vous pouvez également appliquer un mixin pour qu’il soit utilisable pour certaines classes de types uniquement en utilisant le mot clé on lors de la définition du 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 {}

Conclusion

Dans cet article, nous avons appris les cas d’utilisation des implémentations, des extensions et des mots clés lors du développement d’applications Flutter / Dart.

Implémente v/s Étend v/s Avec

Pour résumer, utilisez :

  • Implémente pour appliquer les comportements.
  • S’étend pour partager des comportements de classe unique.
  • Mixins pour le partage de comportements à partir de plusieurs types réutilisables.

En savoir plus:

  • Caractéristiques du langage de fléchettes
  • Apprendre le Flutter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.