Usare super
Fa parte della sezione Programmazione orientata agli oggetti del percorso JavaScript di Coddy. Lezione 37 di 56.
Quando esegui l’override di un metodo, puoi comunque accedere alla versione originale della classe genitore usando super.methodName(). Questo ti permette di estendere o modificare il comportamento della classe genitore invece di sostituirlo completamente.
Crea una classe genitore con un metodo:
class Animal {
makeSound() {
return "Generic animal sound";
}
}Crea una classe figlia che estende la classe genitore:
class Dog extends Animal {
makeSound() {
// Chiama prima il metodo della classe genitore
const parentSound = super.makeSound();
// Poi aggiungi altre funzionalità
return `${parentSound}, but also Woof!`;
}
}Crea un'istanza della classe figlia:
const myDog = new Dog();
console.log(myDog.makeSound());
// Output: "Generic animal sound, but also Woof!"La parola chiave super ti consente di chiamare i metodi della classe genitore, aggiungendo comunque le tue funzionalità nella classe figlia.
Sfida
Ti viene data una classe Shape con un metodo calculateArea() e una classe Rectangle che la estende. Il tuo compito è sovrascrivere il metodo calculateArea() in Rectangle usando super.
Il tuo compito è completare il metodo calculateArea() nella classe Rectangle per:
- Chiamare il metodo
calculateArea()della classe genitore usandosupere memorizzare il risultato - Calcolare l'area effettiva del rettangolo:
width × height - Restituire una stringa combinata: messaggio della classe genitore + area del rettangolo. Esempio:
Calculating area... Rectangle area: 50
Provalo tu
import { Shape } from './shapes.js';
import { Rectangle } from './shapes.js';
// Codice di test - non modificare
const rectangle = new Rectangle(5, 10);
console.log(rectangle.calculateArea()); // Previsto: "Calculating area... Rectangle area: 50"
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