Metoda super()
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 27 z 56.
Metoda super() tworzy i inicjalizuje obiekt przy użyciu konstruktora klasy nadrzędnej. Musi zostać wywołana zanim będzie można dodać właściwości do klasy potomnej.
Pomyśl o tym w ten sposób: klasa nadrzędna tworzy fundament obiektu, a super() mówi „najpierw zbuduj ten fundament”, zanim klasa potomna doda własne funkcje.
Przyjrzyjmy się przykładowi. Utwórz klasę nadrzędną:
class Employee {
constructor(name) {
this.name = name;
}
}Teraz utwórz klasę potomną, która rozszerza klasę nadrzędną:
class Manager extends Employee {
constructor(name, department) {
super(name); // Wywołaj konstruktor klasy nadrzędnej z argumentem name
this.department = department;
}
}Co się tutaj dzieje:
constructor(name, department)- Manager potrzebuje zarówno imienia, jak i działusuper(name)- Przekazujenamedo konstruktora Employee
this.department– Ustawia unikalną właściwość Managera
W ten sposób powstaje Manager, który ma zarówno odziedziczone właściwości (name), jak i własne właściwości (department)!
Utwórz instancję klasy potomnej:
const myManager = new Manager("Sarah", "Engineering");
console.log(myManager.name); // "Sarah"
console.log(myManager.department); // "Engineering"Metodę super() należy wywołać przed użyciem this w konstruktorze klasy pochodnej. Jeśli nie wywołasz super(), JavaScript zgłosi błąd referencji.
Wyzwanie
Dana jest klasa Salad, która rozszerza klasę Meal. Sałatka powinna mieć zarówno nazwę, jak i składniki.
Twoim zadaniem jest uzupełnienie konstruktora klasy Salad poprzez:
- Wywołanie
super()z właściwością name - Ustawienie właściwości
ingredients
Spróbuj swoich sił
import { Meal } from './classes.js';
import { Salad } from './classes.js';
// Kod testowy – nie modyfikuj
const salad = new Salad("Caesar", ["lettuce", "croutons", "cheese"]);
console.log(salad.name); // Powinno wypisać "Caesar"
console.log(salad.ingredients); // Powinno wypisać ["lettuce", "croutons", "cheese"]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