Anropa super och kedja konstruktorer
Nå den överordnade klassen under konstruktionen
Anropa super och kedja konstruktorer är en gratis lektion i Dart Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Dart Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Dart Academy innehåller totalt 4 lektioner.
Konstruktionsordning
När Ni skapar en subklass måste dess förälder initieras först. Dart garanterar att förälderns konstruktor körs innan barnets kropp börjar köras. 🏗️
Möt super
Nyckelordet super syftar på objektets föräldradel. Ni använder det för att nå förälderns konstruktorer, metoder och fält inifrån barnet.
Den implicita super()
Om Ni inte skriver något anropar Dart i hemlighet förälderns konstruktor utan argument åt Er. Den osynliga super() är anledningen till att föräldrar alltid initieras först.
class Animal { Animal() => print('Animal'); }
class Dog extends Animal { Dog(); }Anropa super uttryckligen
När föräldern behöver argument anropar Ni super(...) i konstruktorns initieringslista, efter ett kolon. Det skickar värden vidare uppåt i kedjan.
class Dog extends Animal {
Dog(String name) : super(name);
}Var super ska stå
Super-anropet ska finnas i initieringslistan, aldrig i konstruktorns kropp. När kroppen körs är föräldern redan helt skapad.
Dog(String name, this.breed) : super(name);Super-parametrar
Modern Dart låter Er skicka argument direkt till föräldern med super.field. Det tar bort upprepande standardkod från parameterlistan.
class Dog extends Animal {
Dog(super.name);
}Anropa super-metoder
Inuti en överskuggad metod kör super.method() förälderns ursprungliga version. Ni utökar beteendet i stället för att ersätta det helt.
@override
void speak() {
super.speak();
print('extra');
}Kedja uppåt i trädet
Med flera arvnivåer anropar varje konstruktor sin egen förälder. Denna kedja når toppen och kör sedan kropparna tillbaka ned till Er klass.
Initieringsordning
Den fullständiga ordningen är: initieringslistan och super först, sedan förälderns kropp och därefter barnets kropp. Fält är redo för final innan någon kropp körs.
När föräldern behöver argument
Om föräldern saknar en standardkonstruktor måste Ni anropa super med rätt argument. Hoppar Ni över det rapporterar Dart ett kompileringsfel.
Omdirigering med this
Inom en klass kan en konstruktor anropa en annan med this(...). Det är kedjning mellan syskonkonstruktorer och skiljer sig från att nå uppåt med super.
Point.origin() : this(0, 0);Snabbkontroll
Tänk på var anropet till förälderns konstruktor måste stå.
Sammanfattning
Ni anropade super för att köra förälders konstruktorer och metoder, skickade vidare värden med super-parametrar och omdirigerade syskon med this. 🔗
Lär dig Dart med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Anropa super och kedja konstruktorer” gratis?
Ja – hela texten till ”Anropa super och kedja konstruktorer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Dart Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Dart Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Anropa super och kedja konstruktorer”?
Nå den överordnade klassen under konstruktionen Ni övar på Dart Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Dart Academy?
Du behöver inga förkunskaper. Utbildningen i Dart Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Anropa super och kedja konstruktorer”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Dart Academy-lektionen?
Ja. Varje Dart Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- extends och åsidosättning av metoder
- Anropa super och kedja konstruktorer
- Mixins med nyckelordet with
- on-begränsningar och mixinordning