Sovrascrivere i metodi ereditati
Fa parte della sezione Programmazione orientata agli oggetti del percorso JavaScript di Coddy. Lezione 36 di 56.
L’override di un metodo si verifica quando una sottoclasse fornisce una propria implementazione di un metodo che ha ereditato da una classe genitore. La versione della sottoclasse «sovrascrive» (sostituisce) la versione della classe genitore.
Esempio semplice:
Crea una classe genitore con un metodo:
class Vehicle {
start() {
return "Vehicle starting...";
}
}Crea una classe figlia che estende la classe genitore:
class Car extends Vehicle {
// Questo SOVRASCRIVE il metodo start() di Vehicle
start() {
return "Car engine roaring to life!";
}
}Usa le classi:
const vehicle = new Vehicle();
const car = new Car();
console.log(vehicle.start()); // "Vehicle starting..." (originale)
console.log(car.start()); // "Car engine roaring to life!" (sovrascritto)Regole chiave per l'override:
- Stesso nome del metodo del genitore
- Parametri uguali o compatibili
- La versione del figlio viene chiamata sugli oggetti figli
- Non servono parole chiave speciali - basta definire il metodo
Sfida
Ti vengono forniti una classe genitore Shape e una classe figlia Circle. La classe genitore ha un metodo calculateArea() che restituisce 0.
Il tuo compito è sovrascrivere il metodo calculateArea() nella classe Circle per calcolare l'area effettiva di un cerchio.
La formula per calcolare l'area del cerchio è: π × raggio²
In JavaScript: Math.PI * this.radius * this.radius
Provalo tu
import { Shape } from './shapes.js';
import { Circle } from './shapes.js';
// Metti alla prova la tua implementazione
const myCircle = new Circle(5);
console.log(myCircle.calculateArea());
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Oggetti e la keyword this
Ripasso rapido: oggettiAggiungere metodi agli oggettiCapire la keyword thisFunzioni costruttriciLa keyword newSfida di ripasso7Ereditarietà e parola chiave extends
EreditarietàLa relazione «è un»La parola chiave extendsIl metodo super()Ereditare proprietà e metodiSfida di ripasso13Composizione vs. ereditarietà
«Ha-un» vs. «è-un»I limiti dell’ereditarietà profondaCostruire oggetti2Organizzare il codice
Cosa sono i moduli?Esportare con exportImportare con importExport predefiniti vs. export nominati5Incapsulamento e accesso
IncapsulamentoCampi di classe pubblici e privatiMetodi privatiSfida di riepilogo8Organizzare il codice OOP
Organizzare le classi in moduli11Progetto: Un renderizzatore di forme
Configurazione: classe Shape ed esportazioneEreditarietà della classe CircleOverride e metodo areaContatore statico di Shape14Sistema di gestione della biblioteca
Progettare la bibliotecaClasse Book con composizioneValidazione dell'autore del libroEsercitati da solo: Compilatore JavaScript online