Menu
Coddy logo textTech

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:

  1. constructor(name, department) - Manager ha bisogno sia del nome sia del reparto
  2. super(name) - Passa name al costruttore di Employee
  1. 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.

challenge icon

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:

  1. Chiamando super() con la proprietà name
  2. 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"]
quiz iconMettiti alla prova

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

Esercitati da solo: Compilatore JavaScript online