Menu
Coddy logo textTech

Die super()-Methode

Teil des Abschnitts Objektorientierte Programmierung der JavaScript-Journey von Coddy — Lektion 27 von 56.

Die super()-Methode erstellt und initialisiert das Objekt unter Verwendung des Konstruktors der Elternklasse. Sie muss aufgerufen werden, bevor Sie der Kindklasse Eigenschaften hinzufügen können.

Stellen Sie es sich so vor: Die Elternklasse bildet das Fundament des Objekts, und super() sagt „baue zuerst dieses Fundament“, bevor die Kindklasse ihre eigenen Funktionen hinzufügt.

Schauen wir uns das Beispiel an. Erstellen Sie eine Basisklasse:

class Employee {
  constructor(name) {
    this.name = name;
  }
}

Erstellen Sie nun eine Kind-Klasse, die die Eltern-Klasse erweitert:

class Manager extends Employee {
  constructor(name, department) {
    super(name); // Den Eltern-Konstruktor mit name aufrufen
    this.department = department;
  }
}

Was hier passiert:

  1. constructor(name, department) - Manager benötigt sowohl Name als auch Abteilung
  2. super(name) - Übergibt name an den Konstruktor von Employee
  1. this.department - Setzt die eindeutige Eigenschaft des Managers

Dies erstellt einen Manager, der sowohl geerbte Eigenschaften (name) als auch eigene Eigenschaften (department) besitzt!

Erstellen Sie eine Instanz der untergeordneten Klasse:

const myManager = new Manager("Sarah", "Engineering");
console.log(myManager.name);      // "Sarah"
console.log(myManager.department); // "Engineering"

Die Methode super() muss aufgerufen werden, bevor this im Konstruktor einer abgeleiteten Klasse verwendet wird. Wenn Sie super() nicht aufrufen, wird JavaScript einen Referenzfehler auslösen.

challenge icon

Aufgabe

Gegeben ist eine Salad-Klasse, die Meal erweitert. Der Salad sollte sowohl eine name- als auch eine ingredients-Eigenschaft haben.

Deine Aufgabe ist es, den Konstruktor der Salad-Klasse zu vervollständigen, indem du:

  1. super() mit der name-Eigenschaft aufrufst
  2. Die ingredients-Eigenschaft setzt

Spickzettel

Die Methode super() erstellt und initialisiert das Objekt unter Verwendung des Konstruktors der Elternklasse. Sie muss aufgerufen werden, bevor Sie der Kindklasse Eigenschaften hinzufügen können.

Beispiel für die Verwendung von super() in einer Kindklasse:

class Employee {
  constructor(name) {
    this.name = name;
  }
}

class Manager extends Employee {
  constructor(name, department) {
    super(name); // Zuerst den Eltern-Konstruktor aufrufen
    this.department = department; // Dann Kind-Eigenschaften hinzufügen
  }
}

const myManager = new Manager("Sarah", "Engineering");
console.log(myManager.name);      // "Sarah"
console.log(myManager.department); // "Engineering"

Wichtige Punkte:

  • super() muss aufgerufen werden, bevor this im Kind-Konstruktor verwendet wird
  • Übergeben Sie die notwendigen Argumente von der Kind- an den Eltern-Konstruktor
  • JavaScript wird einen Referenzfehler auslösen, wenn super() nicht aufgerufen wird

Probier es selbst

import { Meal } from './classes.js';
import { Salad } from './classes.js';

// Testcode - nicht ändern
const salad = new Salad("Caesar", ["lettuce", "croutons", "cheese"]);
console.log(salad.name);       // Sollte "Caesar" ausgeben
console.log(salad.ingredients); // Sollte ["lettuce", "croutons", "cheese"] ausgeben
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung