đ€ KĂ€nner du till arv?
Arv gör det möjligt att skapa nya klasser som ÄteranvÀnder, utökar och/eller Àndrar befintliga klassers beteende. Den redan existerande klassen kallas superklass och den nya klassen vi skapar kallas hÀrledd klass. I Dart kan vi bara Àrva en superklass, men arv Àr transitivt. Om class Hatch
hÀrstammar frÄn class Car
och den hÀr klassen hÀrstammar frÄn class Vehicle
kommer Hatch att hÀrledas frÄn Vehicle. AnvÀnd extends
för att skapa en hÀrledd klass och super
nÀr du vill hÀnvisa till överklassen.
NĂ€r class Car extends Vehicle
kommer alla egenskaper, variabler och funktioner som Àr implementerade i class Vehicle
att vara tillgÀngliga i class Car
.
Det Àr ocksÄ möjligt att överskriva funktioner i överklassen.
SÄ: Du anvÀnder extends
nÀr du vill skapa en mer specifik version av en klass.
2âŁïž Using implements
Antag att du vill skapa en egen Car-klass, utan att Àrva alla egenskaper, variabler och funktioner frÄn Vehicle-klassen, men att du bara vill Àrva fordonstypen Vehicle. För att göra detta mÄste Car-klassen implementera grÀnssnittet Vehicle.
Dart gör det möjligt att implementera flera klasser eller grÀnssnitt.
âïž Exempel
FörestÀll dig att du behöver implementera en fÄgel och en anka, bÄda Àr djur, men fÄgeln kan bara flyga och ankan kan flyga och simma. Vi gör detta med hjÀlp av det vi vet hittills.
Först skapar vi superklass och beteenden:
Nu skapar vi Bird
och Duck
, som implementerar de rÀtta beteendena:
BemÀrk att vi med hjÀlp av implements
var tvungna att implementera funktionerna fly
och swim
, vilket innebÀr att vi repeterar kod! Det var inte möjligt att Àrva beteendeimplementationerna pÄ detta sÀtt. Finns det ett sÀtt att ÄteranvÀnda koden för dessa beteenden? Ja, det fÄr vi se hÀrnÀst!
3âŁïž Using with
Mixin Àr en annan typ av struktur, som bara kan anvÀndas med nyckelordet with
och anvÀnds för att inkludera vanliga kodutdrag, jag skulle sÀga, ÄteranvÀnda koden.
Mixins Ă€r ett sĂ€tt att Ă„teranvĂ€nda en klass’ kod i flera klasshierarkier (dartlang.org).
HÀr Àr hur mixins utför den tidigare implementationen:
Du kan ersÀtta abstract class
till mixin
om du föredrar det.
Mixins Àr ett sÀtt att abstrahera och ÄteranvÀnda en familj av operationer och tillstÄnd, det liknar ÄteranvÀndningen du fÄr nÀr du förlÀnger en klass, men Àr inte flera arv, det finns fortfarande bara en överklass. De fungerar genom att mixin-implementationen lÀggs ovanpÄ superklassen för att skapa en ny klass. I exemplet ovan Àr det möjligt att skriva om en funktion, mixins tillÄter detta.
âïžTack
Det var min första berĂ€ttelse pĂ„ Medium, jag hoppas du gillade đ.
Jag vill tacka Romain Rastel för den otroliga berÀttelsen om mixins, jag rÄder dig att lÀsa för att förstÄ Ànnu mer om detta Àmne.
NÄgra frÄgor, stÀll dem gÀrna nedan.