Ereditare proprietà e metodi
Fa parte della sezione Programmazione orientata agli oggetti del percorso JavaScript di Coddy. Lezione 28 di 56.
Quando una classe estende un'altra classe, eredita tutte le proprietà e i metodi della classe genitore. Questo significa che le classi figlie hanno automaticamente accesso a tutto ciò che è definito nella classe genitore.
Creiamo una classe genitore con proprietà e metodi:
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
eat() {
return `${this.name} is eating`;
}
sleep() {
return `${this.name} is sleeping`;
}
}Ora creiamo una classe figlia che eredita da Animal:
class Dog extends Animal {
constructor(name, age, breed) {
super(name, age);
this.breed = breed;
}
}Crea un'istanza della classe Dog:
const rex = new Dog("Rex", 3, "German Shepherd");Ora, anche se non abbiamo definito eat() e sleep() nella classe Dog, possiamo comunque usare questi metodi:
console.log(rex.eat()); // Stampa: Rex sta mangiando
console.log(rex.sleep()); // Stampa: Rex sta dormendoE possiamo accedere a tutte le proprietà ereditate:
console.log(rex.name); // Stampa: Rex
console.log(rex.age); // Stampa: 3
console.log(rex.breed); // Stampa: German ShepherdSfida
Crea una classe Cake che estenda Dessert ed esportala. La torta dovrebbe avere:
- Tutte le proprietà e i metodi ereditati da Dessert
- Una nuova proprietà
flavor - Un nuovo metodo
addCandles()che restituisce una stringa “Added candles to ${this.name}!”
Provalo tu
import { Dessert } from './desserts.js';
import { Cake } from './desserts.js';
// Codice di test - non modificare
const myCake = new Cake("Birthday Cake", 300, "Chocolate");
console.log(myCake.describe()); // Dovrebbe stampare "Birthday Cake has 300 calories"
console.log(myCake.flavor); // Dovrebbe stampare "Chocolate"
console.log(myCake.addCandles()); // Dovrebbe stampare "Added candles to Birthday Cake!"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