Dziedziczenie właściwości i metod
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 28 z 56.
Gdy klasa rozszerza inną klasę, dziedziczy wszystkie właściwości i metody klasy nadrzędnej. Oznacza to, że klasy potomne automatycznie mają dostęp do wszystkiego, co zdefiniowano w klasie nadrzędnej.
Utwórzmy klasę nadrzędną z właściwościami i metodami:
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
eat() {
return `${this.name} is eating`;
}
sleep() {
return `${this.name} is sleeping`;
}
}Teraz utwórzmy klasę potomną dziedziczącą po klasie Animal:
class Dog extends Animal {
constructor(name, age, breed) {
super(name, age);
this.breed = breed;
}
}Utwórz instancję klasy Dog:
const rex = new Dog("Rex", 3, "German Shepherd");Teraz, mimo że nie zdefiniowaliśmy eat() i sleep() w klasie Dog, nadal możemy używać tych metod:
console.log(rex.eat()); // Wyświetla: Rex is eating
console.log(rex.sleep()); // Wyświetla: Rex is sleepingMożemy też uzyskać dostęp do wszystkich odziedziczonych właściwości:
console.log(rex.name); // Wyświetla: Rex
console.log(rex.age); // Wyświetla: 3
console.log(rex.breed); // Wyświetla: German ShepherdWyzwanie
Utwórz klasę Cake, która rozszerza klasę Dessert, i wyeksportuj ją. Klasa Cake powinna mieć:
- Wszystkie odziedziczone właściwości i metody z klasy Dessert
- Nową właściwość
flavor - Nową metodę
addCandles(), która zwraca ciąg znaków “Added candles to ${this.name}!”
Spróbuj swoich sił
import { Dessert } from './desserts.js';
import { Cake } from './desserts.js';
// Kod testowy - nie modyfikuj
const myCake = new Cake("Birthday Cake", 300, "Chocolate");
console.log(myCake.describe()); // Powinno wyświetlić "Birthday Cake has 300 calories"
console.log(myCake.flavor); // Powinno wyświetlić "Chocolate"
console.log(myCake.addCandles()); // Powinno wyświetlić "Added candles to Birthday Cake!"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