implementerer v/S udvider v/s med nøgleord i Dart

i dette indlæg vil vi dække brugssager til redskaber, udvider og med nøgleord. Implementerer v/S udvider v / s med nøgleord i Dart.

introduktion

Hvis du udvikler en Flutter-applikation, skulle du have set en masse brugssager til redskaber, udvider og med nøgleord. For en person, der aldrig har arbejdet med Dart før, er forskellen mellem disse søgeord ikke indlysende.

i dette indlæg vil vi gå i dybden med disse nøgleord for at udvide vores forståelse af Flutter og Dart.

redskaber er til at tvinge adfærd via Interface

i OOP er en grænseflade noget, der håndhæver den afledende klasse for at implementere en sæt liste over offentlige felter og metoder.

men i modsætning til andre traditionelle programmeringssprog som C# og JAVA har Dart ikke eksplicitte interfacetyper. Hver klasse definerer som standard sin egen grænseflade sammensat af offentlige felter og metoder. Så hver klasse kan fungere som en grænseflade i Dart.

Vi bruger nøgleordet redskaber til at implementere en grænseflade. En klasse kan også implementere flere grænseflader.

Dart eksempel 1 implementerer

i eksemplet ovenfor implementerer klasse D klasser A, B og C, derfor skal den implementere de offentlige metoder og felter, der er nødvendige for at af disse klasser.

da Dart ikke har eksplicitte grænseflader, bruger vi den abstrakte klasse som en grænseflade.

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

udvider er til deling af adfærd via arv

i OOP indebærer arv deling af adfærd mellem klasser. Vi kan ikke dele funktioner med en grænseflade. Så når vi implementerer en klasse, kan vi ikke dele det adfærd.

Dart eksempel udvider

i eksemplet ovenfor kan du se, at Klasse B skal levere sin egen implementering af Doa () – metoden, da du kan se, at Klasse B har brug for at give sin egen implementering af Doa () – metoden, så du kan se, at Klasse B har brug for adfærden deles ikke.

Hvis du vil dele adfærden på tværs af disse to klasser, skal du bruge søgeordet udvider.

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

i ovenstående eksempel, da B udvider A, kan du kalde Doa () – metoden direkte fra B ‘ s objekt.

I modsætning til implementering af flere grænseflader understøtter Dart kun enkelt arv. Så du kan ikke strække sig fra flere klasser.

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

med er til blanding

i OOP er en blanding en klasse, der indeholder metoder til brug af andre klasser. I modsætning til grænsefladen og arvsmetoden behøver en blanding ikke at være forældreklassen for de andre klasser.

så en blanding pålægger hverken brugsbegrænsning eller kræfter type begrænsning.

du vil normalt sætte fælles funktioner inde i en blanding. I Dart bruger vi blandingen ved at bruge med nøgleordet.

Dart eksempel med

som vist i eksemplet ovenfor kan implementering af blandingsfelter tilsidesættes om nødvendigt. Desuden kan en klasse bruge flere blandinger.

få flere ting at bemærke om blanding

brug af en klasse som blanding

i Dart kan en klasse også bruges som blanding, 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åndhævelse af blanding til bestemte typer

Du kan også håndhæve en blanding, der kun kan bruges til bestemte typer klasser ved at bruge nøgleordet on, når du definerer blandingen.

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 {}

konklusion

i dette indlæg lærte vi om brugssager til redskaber, udvider og med nøgleord, når vi udvikler Flutter/Dart-applikationer.

implementerer v/S udvider v/s med

for at opsummere brug:

  • implementerer til håndhævelse af adfærd.
  • udvider til deling adfærd af enkelt klasse.
  • blandinger til deling af adfærd fra flere genanvendelige typer.

Lær mere:

  • Dart sprogfunktioner
  • Lær flagrende

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.