Implementerer v/s Utvider v/s Med Søkeord I Dart

i dette innlegget vil vi gå dekke brukstilfeller for redskaper, utvider og med søkeord. Implementerer v / s Utvider v / s med søkeord I Dart.

Innledning

hvis du utvikler Et Flutter-program, burde du ha sett mange brukssaker for redskaper, utvider og med søkeord. For noen som aldri har jobbet med Dart før, er forskjellen mellom disse søkeordene ikke åpenbar.

i dette innlegget vil vi gå i dybden om disse søkeordene for å utvide vår forståelse Av Flutter og Dart.

Implementerer Er For Å Tvinge Oppførsel Via Grensesnitt

I OOP er et grensesnitt noe som håndhever avledet klassen for å implementere en settliste over offentlige felt og metoder. Men I motsetning til andre tradisjonelle programmeringsspråk Som C# og JAVA, Har Dart ikke eksplisitte grensesnittyper. Hver klasse definerer som standard sitt eget grensesnitt som består av offentlige felt og metoder. Så, hver klasse kan fungere som et grensesnitt i Dart.

vi bruker implementerer søkeordet for å implementere et grensesnitt. En klasse kan også implementere flere grensesnitt.

Dart Eksempel 1 Implementerer

i eksemplet ovenfor implementerer Klasse D klasser a, B og c derfor må den implementere de offentlige metodene og feltene av disse klassene.

Siden Dart Ikke har eksplisitte grensesnitt, bruker vi den abstrakte klassen som et grensesnitt.

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

Extends Er For Deling Av Atferd Via Arv

i oop innebærer arv deling av atferd mellom klasser. Vi kan ikke dele funksjoner med et grensesnitt. Sa nar vi implementerer en klasse, kan vi ikke dele det er oppforsel.

Dart Eksempel Utvider

i eksemplet ovenfor kan du se at klasse B må gi sin egen implementering av doA () – metoden som oppførselen er ikke delt.

hvis du vil dele virkemåten på tvers av disse to klassene, bør du bruke søkeordet extends.

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

i eksemplet ovenfor, siden B utvider A, kan du ringe doa () – metoden direkte fra B-objektet.

I Motsetning til å implementere flere grensesnitt, Støtter Dart bare enkelt arv. Så, du kan ikke strekke seg fra flere klasser.

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

Med Is For Mixin

i OOP er en mixin en klasse som inneholder metoder for bruk av andre klasser. I motsetning til grensesnittet og arv tilnærming, en mixin trenger ikke å være den overordnede klassen av de andre klassene.

så en mixin pålegger verken bruksbegrensning eller tvinger typebegrensning.

du vil vanligvis sette vanlige funksjoner inne i en mixin. I Dart bruker vi mixin ved å bruke med-søkeordet.

Dart Eksempel med

som vist i eksemplet ovenfor, kan implementering av mixin-felt overstyres om nødvendig. Videre kan en klasse bruke flere mixins.

Noen Flere Ting Å Merke Seg Om Mixin

Bruke En Klasse som En Mixin

I Dart kan en klasse også brukes som mixin hvis klassen er konstruktørfri. For eksempel er koden nedenfor gyldig.

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

men denne nedenfor er ugyldig fordi klasse D erklærer en konstruktør.

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

Håndheving Mixin For Bestemte Typer

du kan også håndheve en mixin å være brukbar for visse typer klasser bare ved å bruke den på søkeord når du definerer 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 {}

Konklusjon

I dette innlegget lærte vi om brukstilfeller for redskaper, utvider og med søkeord når vi utviklet Flutter / Dart-applikasjoner.

Implementerer v / S Utvider v/S med

for å oppsummere bruk:

  • Implementerer for å håndheve atferd.
  • Utvider for deling atferd av enkelt klasse.
  • Mixins for deling av atferd fra flere gjenbrukbare typer.

Lær Mer:

  • Dart Språk funksjoner
  • Lær Flagre

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.