Menu
Coddy logo textTech

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:

  1. constructor(name, department) - Manager potrzebuje zarówno imienia, jak i działu
  2. super(name) - Przekazuje name do konstruktora Employee
  1. 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.

challenge icon

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:

  1. Wywołanie super() z właściwością name
  2. 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"]
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator JavaScript online