extends i przesłanianie metod
Współdzielenie i specjalizowanie zachowania klasy nadrzędnej
extends i przesłanianie metod to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 1 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.
Współdzielenie zachowania
Gdy dwie klasy współdzielą większość zachowania, możesz napisać je raz i używać ponownie. Dart nazywa to dziedziczeniem, dzięki czemu unikasz kopiowania kodu. 🌱
Słowo kluczowe extends
Dziedziczenie uzyskuje się przez zapisanie extends po nazwie klasy. Nowa klasa staje się klasą potomną i automatycznie otrzymuje pola oraz metody klasy nadrzędnej.
class Animal {}
class Dog extends Animal {}Klasa nadrzędna i potomna
Klasa, po której dziedziczysz, to nadklasa (klasa nadrzędna). Nowa klasa to podklasa (klasa potomna). Pies jest Zwierzęciem, ale nie każde Zwierzę jest Psem.
Dziedziczone składowe
Klasa potomna od razu może używać publicznych metod klasy nadrzędnej tak, jakby były jej własnymi. Zachowanie dziedziczone definiujesz raz, a korzysta z niego każda podklasa.
class Animal {
void breathe() => print('breathing');
}
class Dog extends Animal {}
// Dog().breathe() worksDodawanie nowego zachowania
Podklasa może również dodać własne metody do tego, co dziedziczy. Klasa potomna nadal jest Zwierzęciem, ale zyskuje dodatkowe możliwości, których nie miała klasa nadrzędna.
class Dog extends Animal {
void bark() => print('Woof!');
}Przesłanianie metody
Czasami wersja odziedziczona po klasie nadrzędnej nie jest odpowiednia dla klasy potomnej. Przesłanianie pozwala podklasie zastąpić odziedziczoną metodę własną implementacją.
class Animal {
void speak() => print('...');
}
class Cat extends Animal {
void speak() => print('Meow');
}Znacznik @override
Dodaj adnotację @override nad zastępowaną metodą. Informuje ona analizator, aby potwierdził, że klasa nadrzędna rzeczywiście ma taką metodę, dzięki czemu literówki zostaną wykryte odpowiednio wcześnie.
class Cat extends Animal {
@override
void speak() => print('Meow');
}Wymagany ten sam podpis
Przesłonięta metoda musi zachować tę samą nazwę i zgodny podpis. Jeśli niedbale zmienisz parametry lub typ zwracany, Dart odrzuci taką metodę.
Ponowne użycie wersji nadrzędnej
W przesłoniętej metodzie nadal można wywołać oryginał za pomocą super, a następnie dodać własne kroki przed nim lub po nim. Rozszerzasz wtedy działanie zamiast je całkowicie usuwać.
@override
void speak() {
super.speak();
print('and purrs');
}Polimorfizm w działaniu
Przechowaj obiekty klas potomnych w zmiennej typu Animal i wywołaj speak: każdy obiekt uruchomi własną wersję. To właśnie polimorfizm jest główną korzyścią z przesłaniania.
Animal a = Cat();
a.speak(); // MeowPojedyncze dziedziczenie
Klasa w języku Dart może rozszerzać dokładnie jedną klasę nadrzędną, nigdy dwie. Do współdzielenia kodu między niezwiązanymi hierarchiami można później użyć mixinów.
Szybkie sprawdzenie
Zastępujesz odziedziczoną metodę w podklasie. Co ona robi?
Podsumowanie
Użył(a) Pan/Pani extends, aby odziedziczyć składowe klasy nadrzędnej, dodał(a) nowe metody i przesłonił(a) inne za pomocą @override. To podstawa ponownego używania klas. 🎉
Ucz się Dart dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „extends i przesłanianie metod” jest bezpłatna?
Tak — pełny tekst „extends i przesłanianie metod” 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 „extends i przesłanianie metod”?
Współdzielenie i specjalizowanie zachowania klasy nadrzędnej Ć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 1 z 4.
Ile czasu zajmuje lekcja „extends i przesłanianie metod”?
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