Menu
Coddy logo textTech

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 sleeping

Et 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 Shepherd
challenge icon

Dé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 Shepherd

La 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!"
quiz iconTestez-vous

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