La méthode super()
Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy — leçon 27 sur 56.
La méthode super() crée et initialise l'objet en utilisant le constructeur de la classe parente. Elle doit être appelée avant de pouvoir ajouter des propriétés à la classe enfant.
Voyez les choses ainsi : la classe parente construit la fondation de l'objet, et super() dit « construis d'abord cette fondation » avant que la classe enfant n'ajoute ses propres fonctionnalités.
Jetons un coup d'œil à l'exemple. Créez une classe parente :
class Employee {
constructor(name) {
this.name = name;
}
}Maintenant, créez une classe enfant qui étend le parent :
class Manager extends Employee {
constructor(name, department) {
super(name); // Appeler le constructeur parent avec name
this.department = department;
}
}Ce qui se passe ici :
constructor(name, department)- Manager a besoin à la fois du nom et du départementsuper(name)- Transmetnameau constructeur de Employee
this.department- Définit la propriété unique de Manager
Cela crée un Manager qui possède à la fois des propriétés héritées (name) et ses propres propriétés (department) !
Créez une instance de la classe enfant :
const myManager = new Manager("Sarah", "Engineering");
console.log(myManager.name); // "Sarah"
console.log(myManager.department); // "Engineering"La méthode super() doit être appelée avant d'utiliser this dans le constructeur d'une classe dérivée. Si vous n'appelez pas super(), JavaScript lèvera une erreur de référence.
Défi
Étant donné une classe Salad qui étend Meal. La Salad doit avoir à la fois un name et des ingredients.
Votre tâche consiste à compléter le constructeur de la classe Salad en :
- Appelant
super()avec la propriéténame - Définissant la propriété
ingredients
Aide-mémoire
La méthode super() crée et initialise l'objet en utilisant le constructeur de la classe parente. Elle doit être appelée avant de pouvoir ajouter des propriétés à la classe enfant.
Exemple d'utilisation de super() dans une classe enfant :
class Employee {
constructor(name) {
this.name = name;
}
}
class Manager extends Employee {
constructor(name, department) {
super(name); // Appeler d'abord le constructeur parent
this.department = department; // Ajouter ensuite les propriétés de l'enfant
}
}
const myManager = new Manager("Sarah", "Engineering");
console.log(myManager.name); // "Sarah"
console.log(myManager.department); // "Engineering"Points clés :
super()doit être appelé avant d'utiliserthisdans le constructeur de l'enfant- Passez les arguments nécessaires de l'enfant au constructeur parent
- JavaScript lèvera une erreur de référence (reference error) si
super()n'est pas appelé
Essayez vous-même
import { Meal } from './classes.js';
import { Salad } from './classes.js';
// Code de test - ne pas modifier
const salad = new Salad("Caesar", ["lettuce", "croutons", "cheese"]);
console.log(salad.name); // Devrait afficher "Caesar"
console.log(salad.ingredients); // Devrait afficher ["lettuce", "croutons", "cheese"]Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Programmation Orientée Objet
1Objets et le mot-clé this
Révision rapide : Les objetsAjouter des méthodes aux objetsComprendre le mot-clé thisFonctions constructeursLe mot-clé newDéfi récapitulatif7L'héritage et le mot-clé extends
L'héritageLa relation « est un »Le mot-clé extendsLa méthode super()Hériter des propriétés et méthodesDéfi récapitulatif10Polymorphisme
Qu'est-ce que le polymorphisme ?Redéfinition de méthodes héritéesUtiliser superDéfi récapitulatif13Composition vs Héritage
Les relations « has-a » vs « is-a »Les limites de l'héritage profondConstruction d'objets2Organisation du code
Qu'est-ce qu'un module ?Exporter avec exportImporter avec importExports par défaut vs nommés5Encapsulation & Accès
EncapsulationChamps de classe publics et privésMéthodes privéesDéfi récapitulatif8Organisation du code POO
Organiser les classes en modules11Projet : Un moteur de rendu de formes
Configuration : Classe Shape et ExportationHéritage de la classe Circle14Système de gestion de bibliothèque
Conception de la bibliothèqueClasse Book avec composition3Classes et Objets
Qu'est-ce qu'une classe ?Créer des instancesPropriétés et méthodesDéfi récapitulatif9Méthodes et propriétés statiques
Niveau classe vs Niveau instancePropriétés statiquesMéthodes utilitaires statiquesDéfi récapitulatif