Il metodo super()
Fa parte della sezione Programmazione orientata agli oggetti del percorso JavaScript di Coddy. Lezione 27 di 56.
Il metodo super() crea e inizializza l’oggetto usando il costruttore della classe genitore. Deve essere chiamato prima di poter aggiungere proprietà alla classe figlia.
Pensala così: la classe genitore costruisce le fondamenta dell’oggetto e super() dice «costruisci prima quelle fondamenta», prima che la classe figlia aggiunga le proprie funzionalità.
Diamo un'occhiata all'esempio. Crea una classe genitore:
class Employee {
constructor(name) {
this.name = name;
}
}Ora crea una classe figlia che estende la classe genitore:
class Manager extends Employee {
constructor(name, department) {
super(name); // Chiama il costruttore della classe genitore con name
this.department = department;
}
}Cosa sta succedendo qui:
constructor(name, department)- Manager ha bisogno sia del nome sia del repartosuper(name)- Passanameal costruttore di Employee
this.department- Imposta la proprietà univoca di Manager
Questo crea un Manager che ha sia proprietà ereditate (name) sia proprietà proprie (department)!
Crea un'istanza della classe figlia:
const myManager = new Manager("Sarah", "Engineering");
console.log(myManager.name); // "Sarah"
console.log(myManager.department); // "Engineering"Il metodo super() deve essere chiamato prima di usare this nel costruttore di una classe derivata. Se non chiami super(), JavaScript genererà un errore di riferimento.
Sfida
Data una classe Salad che estende Meal. La classe Salad dovrebbe avere sia un nome che degli ingredienti.
Il tuo compito è completare il costruttore della classe Salad:
- Chiamando
super()con la proprietà name - Impostando la proprietà
ingredients
Provalo tu
import { Meal } from './classes.js';
import { Salad } from './classes.js';
// Codice di test - non modificare
const salad = new Salad("Caesar", ["lettuce", "croutons", "cheese"]);
console.log(salad.name); // Dovrebbe produrre "Caesar"
console.log(salad.ingredients); // Dovrebbe produrre ["lettuce", "croutons", "cheese"]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