Używanie super
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 37 z 56.
Gdy nadpisujesz metodę, nadal możesz uzyskać dostęp do oryginalnej wersji metody z klasy nadrzędnej za pomocą super.methodName(). Dzięki temu możesz rozszerzyć lub zmodyfikować zachowanie klasy nadrzędnej, zamiast całkowicie je zastępować.
Utwórz klasę nadrzędną z metodą:
class Animal {
makeSound() {
return "Generic animal sound";
}
}Utwórz klasę potomną, która rozszerza klasę nadrzędną:
class Dog extends Animal {
makeSound() {
// Najpierw wywołaj metodę klasy nadrzędnej
const parentSound = super.makeSound();
// Następnie rozszerz ją o dodatkową funkcjonalność
return `${parentSound}, but also Woof!`;
}
}Utwórz instancję klasy potomnej:
const myDog = new Dog();
console.log(myDog.makeSound());
// Wynik: "Generic animal sound, but also Woof!"Słowo kluczowe super pozwala wywoływać metody klasy nadrzędnej, jednocześnie dodając własną funkcjonalność w klasie potomnej.
Wyzwanie
Otrzymujesz klasę Shape z metodą calculateArea() oraz klasę Rectangle, która ją rozszerza. Twoim zadaniem jest nadpisanie metody calculateArea() w klasie Rectangle przy użyciu super.
Twoim zadaniem jest uzupełnienie metody calculateArea() w klasie Rectangle, aby:
- Wywołać metodę
calculateArea()klasy nadrzędnej przy użyciusuperi zapisać wynik - Obliczyć rzeczywiste pole prostokąta:
width × height - Zwrócić połączony ciąg znaków: komunikat klasy nadrzędnej + pole prostokąta. Przykład:
Calculating area... Rectangle area: 50
Spróbuj swoich sił
import { Shape } from './shapes.js';
import { Rectangle } from './shapes.js';
// Kod testowy - nie modyfikuj
const rectangle = new Rectangle(5, 10);
console.log(rectangle.calculateArea()); // Oczekiwane: "Calculating area... Rectangle area: 50"
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Obiekty i słowo kluczowe this
Szybka powtórka: obiektyDodawanie metod do obiektówZrozumienie słowa kluczowego thisFunkcje konstruktoraSłowo kluczowe newWyzwanie podsumowujące7Dziedziczenie i słowo kluczowe extends
DziedziczenieRelacja „jest rodzajem”Słowo kluczowe extendsMetoda super()Dziedziczenie właściwości i metodWyzwanie podsumowujące10Polimorfizm
Czym jest polimorfizm?Nadpisywanie odziedziczonych metodUżywanie superWyzwanie podsumowujące13Kompozycja a dziedziczenie
Relacja „ma” a relacja „jest”Ograniczenia głębokiego dziedziczeniaTworzenie obiektów2Organizowanie kodu
Czym są moduły?Eksportowanie za pomocą exportImportowanie za pomocą importEksporty domyślne a nazwane5Enkapsulacja i dostęp
EnkapsulacjaPubliczne i prywatne pola klasyMetody prywatneWyzwanie podsumowujące8Organizowanie kodu OOP
Organizowanie klas w moduły11Projekt: Renderer kształtów
Konfiguracja: klasa Shape i eksportDziedziczenie klasy CircleNadpisywanie i metoda obliczania polaStatyczny licznik kształtów14System zarządzania biblioteką
Projektowanie bibliotekiKlasa Book z kompozycjąWalidacja autora książki9Metody i właściwości statyczne
Poziom klasy a poziom instancjiWłaściwości statyczneStatyczne metody pomocniczeWyzwanie podsumowującePoćwicz samodzielnie: Kompilator JavaScript online