Nadpisywanie odziedziczonych metod
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 36 z 56.
Przesłanianie metod polega na tym, że klasa potomna dostarcza własną implementację metody, którą dziedziczy po klasie nadrzędnej. Wersja klasy potomnej „przesłania” (zastępuje) wersję klasy nadrzędnej.
Prosty przykład:
Utwórz klasę nadrzędną z metodą:
class Vehicle {
start() {
return "Vehicle starting...";
}
}Utwórz klasę potomną, która rozszerza klasę nadrzędną:
class Car extends Vehicle {
// To NADPISUJE metodę start() klasy Vehicle
start() {
return "Car engine roaring to life!";
}
}Użyj klas:
const vehicle = new Vehicle();
const car = new Car();
console.log(vehicle.start()); // "Vehicle starting..." (oryginalna)
console.log(car.start()); // "Car engine roaring to life!" (nadpisana)Najważniejsze zasady nadpisywania:
- Taka sama nazwa metody jak w klasie nadrzędnej
- Takie same lub zgodne parametry
- Wersja potomna jest wywoływana na obiektach potomnych
- Nie są potrzebne żadne specjalne słowa kluczowe — wystarczy zdefiniować metodę
Wyzwanie
Masz daną klasę nadrzędną Shape i klasę podrzędną Circle. Klasa nadrzędna ma metodę calculateArea(), która zwraca 0.
Twoim zadaniem jest nadpisanie metody calculateArea() w klasie Circle, aby obliczała rzeczywiste pole koła.
Wzór na pole koła: π × promień²
W JavaScript: Math.PI * this.radius * this.radius
Spróbuj swoich sił
import { Shape } from './shapes.js';
import { Circle } from './shapes.js';
// Przetestuj swoją implementację
const myCircle = new Circle(5);
console.log(myCircle.calculateArea());
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