Hériter des propriétés et méthodes
Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy — leçon 28 sur 56.
Lorsqu'une classe en étend une autre, elle hérite de toutes les propriétés et méthodes de la classe parente. Cela signifie que les classes enfants ont automatiquement accès à tout ce qui est défini dans la classe parente.
Créons une classe parente avec des propriétés et des méthodes :
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
eat() {
return `${this.name} is eating`;
}
sleep() {
return `${this.name} is sleeping`;
}
}Maintenant, créons une classe enfant qui hérite de Animal :
class Dog extends Animal {
constructor(name, age, breed) {
super(name, age);
this.breed = breed;
}
}Créez une instance de la classe Dog :
const rex = new Dog("Rex", 3, "German Shepherd");Maintenant, même si nous n'avons pas défini eat() et sleep() dans la classe Dog, nous pouvons toujours utiliser ces méthodes :
console.log(rex.eat()); // Affiche : Rex is eating
console.log(rex.sleep()); // Affiche : Rex is sleepingEt nous pouvons accéder à toutes les propriétés héritées :
console.log(rex.name); // Affiche : Rex
console.log(rex.age); // Affiche : 3
console.log(rex.breed); // Affiche : German ShepherdDéfi
Créez une classe Cake qui étend Dessert et exportez-la. Le Cake doit avoir :
- Toutes les propriétés et méthodes héritées de Dessert
- Une nouvelle propriété
flavor - Une nouvelle méthode
addCandles()qui renvoie une chaîne de caractères “Added candles to ${this.name}!”
Aide-mémoire
Les classes enfants héritent de toutes les propriétés et méthodes de leur classe parente en utilisant le mot-clé extends :
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
eat() {
return `${this.name} is eating`;
}
sleep() {
return `${this.name} is sleeping`;
}
}
class Dog extends Animal {
constructor(name, age, breed) {
super(name, age);
this.breed = breed;
}
}
const rex = new Dog("Rex", 3, "German Shepherd");
console.log(rex.eat()); // Rex is eating
console.log(rex.name); // Rex
console.log(rex.breed); // German ShepherdLa classe enfant peut accéder à toutes les propriétés et méthodes héritées sans avoir à les redéfinir.
Essayez vous-même
import { Dessert } from './desserts.js';
import { Cake } from './desserts.js';
// Code de test - ne pas modifier
const myCake = new Cake("Birthday Cake", 300, "Chocolate");
console.log(myCake.describe()); // Devrait afficher "Birthday Cake has 300 calories"
console.log(myCake.flavor); // Devrait afficher "Chocolate"
console.log(myCake.addCandles()); // Devrait afficher "Added candles to Birthday Cake!"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