implementeert v/S breidt v/s uit met trefwoorden in Dart

In dit bericht zullen we use cases behandelen voor implements, breidt uit en met trefwoorden. Implementeert v/s breidt v / s met zoekwoorden in Dart.

Introduction

als u een Flutter-toepassing aan het ontwikkelen bent, zou u veel use cases moeten hebben gezien voor implements, expends en met trefwoorden. Voor iemand die nog nooit eerder met Dart heeft gewerkt, is het verschil tussen deze zoekwoorden niet duidelijk.

in dit bericht zullen we dieper ingaan op deze trefwoorden om ons begrip van Flutter en Dart uit te breiden.

Implements Is voor het forceren van gedrag Via Interface

in OOP, een interface is iets dat de afgeleide klasse dwingt om een set lijst van publieke velden en methoden te implementeren.

maar in tegenstelling tot andere traditionele programmeertalen zoals C# en JAVA, heeft Dart geen expliciete interfacetypen. Elke klasse definieert standaard zijn eigen interface die bestaat uit publieke velden en methoden. Dus, elke klasse kan fungeren als een interface in Dart.

we gebruiken het sleutelwoord implements om een interface te implementeren. Ook kan een klasse meerdere interfaces implementeren.

Dart Voorbeeld 1 implementeert

in het bovenstaande voorbeeld implementeert Klasse D klassen A, B en C daarom moet Klasse D de openbare methoden en velden van die klassen implementeren.

verder, omdat Dart geen expliciete interfaces heeft, gebruiken we de abstract class als een interface.

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

verlengt is voor het delen van gedrag Via overerving

in OOP, overerving impliceert het delen van gedrag tussen klassen. We kunnen geen functies delen met een interface. Dus als we een klas implementeren, kunnen we het gedrag niet delen.

Dart voorbeeld breidt

in het voorbeeld hierboven kunt u zien dat klasse B zijn eigen implementatie van de Doa() methode moet bieden omdat het gedrag niet gedeeld wordt.

Als u het gedrag over deze twee klassen wilt delen, moet u het sleutelwoord breidt gebruiken.

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

in het bovenstaande voorbeeld, omdat B A uitbreidt, kunt u de methode doA() direct vanuit het object van B aanroepen.

In tegenstelling tot het implementeren van meerdere interfaces, ondersteunt Dart alleen enkele overerving. Dus, je kunt niet uitbreiden van meerdere klassen.

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

met Is voor Mixin

in OOP is een mixin een klasse die methoden bevat voor gebruik door andere klassen. In tegenstelling tot de interface en overerving aanpak, een mixin hoeft niet de ouder klasse van die andere klassen.

dus een mixin legt geen gebruiksbeperking op of forceert geen typebeperking.

u plaatst gewoonlijk gemeenschappelijke functies in een mixin. In Dart, maken we gebruik van de mixin met behulp van de met trefwoord.

Dart voorbeeld met

zoals getoond in het voorbeeld hierboven, kan implementatie van mixin velden worden overschreven indien nodig. Bovendien kan een klasse meerdere mixins gebruiken.

weinig meer op te merken over Mixin

een klasse gebruiken als Mixin

In Dart, kan een klasse ook worden gebruikt als mixin als de klasse constructor-less is. De onderstaande code is bijvoorbeeld geldig.

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

maar deze hieronder is ongeldig omdat Klasse D Een constructor declareert.

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

afdwingen van Mixin voor specifieke typen

U kunt ook afdwingen dat een mixin bruikbaar is voor bepaalde typen klassen alleen door het sleutelwoord de on te gebruiken bij het definiëren van de 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 {}

conclusie

In dit bericht leerden we over de use cases voor implements, breads en met trefwoorden bij het ontwikkelen van Flutter/Dart applicaties.

implementeert v/s breidt v/S uit met

om samen te vatten gebruik:

  • implementeert voor afdwingen van gedrag.
  • strekt zich uit voor het delen van gedrag van één klasse.
  • Mixins voor het delen van gedrag van meerdere herbruikbare types.

meer informatie:

  • Dart Language Features
  • leer Flutter

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.