🤔 Kender du til arv?
Arv giver os mulighed for at oprette nye klasser, der genbruger, udvider og/eller ændrer allerede eksisterende klassers adfærd. Den allerede eksisterende klasse kaldes superklasse, og den nye klasse, vi opretter, kaldes afledt klasse. I Dart kan vi kun arve én superklasse, men arvelighed er transitiv. Hvis class Hatch
er afledt af class Car
, og denne klasse er afledt af class Vehicle
, så vil Hatch være afledt af Vehicle. Brug extends
til at oprette afledt klasse, og super
når du vil henvise til superklassen.
Når class Car extends Vehicle
, vil alle egenskaber, variabler, funktioner implementeret i class Vehicle
være tilgængelige i class Car
.
Det er også muligt at overskrive superklassens funktioner.
Sådan: Du bruger extends
, når du vil oprette en mere specifik version af en klasse.
2⃣️ Brug af implements
Sæt, du vil oprette din egen Car-klasse uden at arve alle egenskaber, variabler og funktioner fra Vehicle-klassen, men du vil kun arve Vehicle-typen. For at gøre dette skal Car-klassen implementere grænsefladen Vehicle.
Dart giver dig mulighed for at implementere flere klasser eller grænseflader.
✍️ Eksempel
Forestil dig, at du skal implementere en fugl og en and, begge er dyr, men fuglen kan kun flyve, og anden kan både flyve og svømme. Vi vil gøre dette ved hjælp af det, vi kender indtil videre:
Først vil vi oprette superklasse og adfærd:
Nu vil vi oprette Bird
og Duck
, der implementerer korrekt adfærd:
Bemærk, at ved hjælp af implements
skulle vi implementere fly
og swim
funktioner, gentagelse af kode! Det var ikke muligt at arve adfærdsimplementeringerne på denne måde. Er der en måde at genbruge koden for disse adfærdsmodeller på? Ja, det får vi at se næste gang!
3⃣️ Brug af med
Mixin er en anden type struktur, som kun kan bruges med nøgleordet with
og bruges til at inkludere fælles kodestumper, vil jeg sige, genbruge koden.
Mixins er en måde at genbruge en klasses kode i flere klassehierarkier (dartlang.org).
Her er hvordan mixins udfører den tidligere implementering:
Du kan udskifte abstract class
til mixin
hvis du foretrækker det.
Mixins er en måde at abstrahere og genbruge en familie af operationer og tilstand på, det svarer til det genbrug du får ved at udvide en klasse, men er ikke flere arvegange, der er stadig kun én overklasse. De fungerer ved at lægge mixin-implementeringen oven på superklassen for at skabe en ny klasse. I eksemplet ovenfor er det muligt at omskrive en funktion, mixins tillader dette.
✌️Thanks
Det var min første historie på Medium, jeg håber du kunne lide 😃.
Jeg vil gerne takke Romain Rastel for den utrolige historie om mixins, jeg råder dig til at læse for at forstå endnu mere om dette emne.
Nogle spørgsmål, du er velkommen til at stille dem nedenfor.