Wywoływanie super i łańcuch konstruktorów
Dostęp do klasy nadrzędnej podczas konstruowania
Wywoływanie super i łańcuch konstruktorów to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.
Kolejność tworzenia
Podczas tworzenia podklasy najpierw trzeba skonfigurować jej klasę nadrzędną. Dart gwarantuje, że konstruktor klasy nadrzędnej uruchomi się, zanim rozpocznie się ciało klasy potomnej. 🏗️
Poznaj super
Słowo kluczowe super odnosi się do części obiektu pochodzącej z klasy nadrzędnej. Używa się go wewnątrz klasy potomnej, aby uzyskać dostęp do konstruktora, metod i pól klasy nadrzędnej.
Niejawne super()
Jeśli niczego nie napiszesz, Dart po cichu wywoła za Ciebie konstruktor klasy nadrzędnej bez argumentów. To niewidoczne super() sprawia, że klasy nadrzędne zawsze są inicjalizowane jako pierwsze.
class Animal { Animal() => print('Animal'); }
class Dog extends Animal { Dog(); }Jawne wywołanie super
Gdy klasa nadrzędna wymaga argumentów, wywołujesz super(...) na liście inicjalizatorów konstruktora, po dwukropku. W ten sposób przekazujesz wartości wyżej w łańcuchu.
class Dog extends Animal {
Dog(String name) : super(name);
}Miejsce dla super
Wywołanie super znajduje się na liście inicjalizatorów, nigdy w ciele konstruktora. Zanim wykona się ciało, klasa nadrzędna jest już w pełni utworzona.
Dog(String name, this.breed) : super(name);Parametry super
Nowoczesny Dart pozwala przekazywać argumenty bezpośrednio do klasy nadrzędnej za pomocą super.field. Eliminuje to powtarzalny kod w liście parametrów.
class Dog extends Animal {
Dog(super.name);
}Wywoływanie metod super
W przesłoniętej metodzie super.method() uruchamia oryginalną wersję z klasy nadrzędnej. Rozszerzasz wtedy działanie zamiast całkowicie je zastępować.
@override
void speak() {
super.speak();
print('extra');
}Łańcuch w górę hierarchii
Przy kilku poziomach dziedziczenia każdy konstruktor wywołuje konstruktor własnej klasy nadrzędnej. Ten łańcuch dociera na szczyt, a następnie wykonuje ciała konstruktorów z powrotem w dół aż do Państwa klasy.
Kolejność inicjalizacji
Pełna kolejność jest następująca: najpierw lista inicjalizatorów i super, potem ciało klasy nadrzędnej, a na końcu ciało klasy potomnej. Pola są gotowe jako final, zanim wykona się jakiekolwiek ciało.
Gdy klasa nadrzędna wymaga argumentów
Jeśli klasa nadrzędna nie ma konstruktora domyślnego, musisz wywołać super z odpowiednimi argumentami. Pominięcie tego wywołania spowoduje błąd kompilacji w języku Dart.
Przekierowanie za pomocą this
W obrębie jednej klasy konstruktor może wywołać inny konstruktor za pomocą this(...). To łańcuch wywołań między konstruktorami tej samej klasy, odmienny od przechodzenia w górę za pomocą super.
Point.origin() : this(0, 0);Szybkie sprawdzenie
Zastanów się, gdzie musi pojawić się wywołanie konstruktora klasy nadrzędnej.
Podsumowanie
Użył(a) Pan/Pani super do uruchamiania konstruktorów i metod klasy nadrzędnej, przekazywał(a) wartości za pomocą parametrów super oraz przekierowywał(a) wywołania między konstruktorami za pomocą this. 🔗
Często zadawane pytania
Czy lekcja „Wywoływanie super i łańcuch konstruktorów” jest bezpłatna?
Tak — pełny tekst „Wywoływanie super i łańcuch konstruktorów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wywoływanie super i łańcuch konstruktorów”?
Dostęp do klasy nadrzędnej podczas konstruowania Ćwiczysz Dart Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Dart Academy?
Nie wymagamy żadnego doświadczenia. Dart Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Wywoływanie super i łańcuch konstruktorów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Dart Academy?
Tak. Każda lekcja Dart Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- extends i przesłanianie metod
- Wywoływanie super i łańcuch konstruktorów
- Mixiny ze słowem kluczowym with
- Ograniczenia on i kolejność mixinów