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:
constructor(name, department)- Manager benötigt sowohl Name als auch Abteilungsuper(name)- Übergibtnamean den Konstruktor von Employee
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.
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:
super()mit dername-Eigenschaft aufrufst- 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, bevorthisim 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"] ausgebenDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Objekte & das this-Schlüsselwort
Kurze Wiederholung: ObjekteMethoden zu Objekten hinzufügenDas this-Schlüsselwort verstehenKonstruktorfunktionenDas new-SchlüsselwortWiederholungs-Challenge7Vererbung & das extends-Schlüsselwort
VererbungDie „ist-ein“-BeziehungDas extends-SchlüsselwortDie super()-MethodeVererben von Eigenschaften & MethodenWiederholungs-Challenge10Polymorphie
Was ist Polymorphie?Geerbte Methoden überschreibenVerwendung von superWiederholungs-Challenge13Komposition vs. Vererbung
Die "hat-ein"- vs. "ist-ein"-BeziehungDie Grenzen tiefer VererbungObjekte zusammenbauen2Code organisieren
Was sind Module?Exportieren mit exportImportieren mit importDefault- vs. benannte Exports5Kapselung & Zugriff
KapselungÖffentliche & private KlassenfelderPrivate MethodenWiederholungs-Herausforderung8OOP-Code strukturieren
Klassen in Modulen organisieren11Projekt: Ein Shape-Renderer
Setup: Shape-Klasse & ExportCircle-Klasse: Vererbung14Bibliotheksverwaltungssystem
Entwurf der BibliothekBuch-Klasse mit Komposition3Klassen & Objekte
Was ist eine Klasse?Instanzen erstellenEigenschaften und MethodenWiederholungs-Challenge6Projekt: Ein einfaches Bankkonto
Klasse BankAccountEinzahlungen und Auszahlungen9Statische Methoden & Eigenschaften
Klassenebene vs. InstanzebeneStatische EigenschaftenStatische HilfsmethodenWiederholungs-Challenge12Getter & Setter
Die Schlüsselwörter get und setBerechnete EigenschaftenValidierung und SeiteneffekteWiederholungs-Challenge15Abschluss-Herausforderungen
Spielfiguren-BuilderE-Commerce ProduktsystemUniversitäts-VerwaltungssystemSmart-Home-Gerätesystem