Relacja „jest rodzajem”
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 25 z 56.
Relacja „jest rodzajem” to prosty test pozwalający określić, kiedy dziedziczenie ma sens. Jeśli możesz powiedzieć „X jest Y” i brzmi to poprawnie, X prawdopodobnie powinno dziedziczyć po Y.
Poprawnie (użyj dziedziczenia):
- „Pies jest zwierzęciem” →
class Dog extends Animal
- „Samochód jest pojazdem” →
class Car extends Vehicle
- „Podręcznik jest książką” →
class Textbook extends Book
Niepoprawne (nie używaj dziedziczenia):
- „Kierowca jest samochodem” → Nie, kierowca używa samochodu
- „Koło jest samochodem” → Nie, koło jest częścią samochodu
- „Uczeń jest klasą” → Nie, uczeń znajduje się w klasie
Na przykład rozważmy dwa obiekty:
// Klasa bazowa – czym wszystkie te obiekty SĄ
class Book {
constructor(title, author, pages) {
this.title = title;
this.author = author;
this.pages = pages;
}
read() {
console.log(`Reading ${this.title} by ${this.author}`);
}
}
// Novel JEST Book (poprawne dziedziczenie)
class Novel extends Book {
constructor(title, author, pages, genre) {
super(title, author, pages);
this.genre = genre;
}
}
// Używanie klas
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read(); // "Reading 1984 by George Orwell" - odziedziczone po Book
Wyzwanie
Otrzymujesz klasę ElectronicDevice i klasę Smartphone. Smartphone to typ urządzenia ElectronicDevice z dodatkowymi funkcjami. Twoim zadaniem jest utworzyć obiekt `myPhone` o marce "Samsung" i modelu “Galaxy S23”.
Spróbuj swoich sił
import { ElectronicDevice } from './electronicDevice.js';
import { Smartphone } from './smartphone.js';
// TODO: Utwórz obiekt `myPhone` marki "Samsung" i modelu “Galaxy S23”.
// Kod testowy — nie modyfikuj
console.log(myPhone.turnOn()); // Powinno wypisać "Samsung Galaxy S23 is now ON"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