Menu
Coddy logo textTech

Redéfinition de méthodes héritées

Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy — leçon 36 sur 56.

La redéfinition de méthode (method overriding) se produit lorsqu'une classe enfant fournit sa propre implémentation d'une méthode qu'elle a héritée d'une classe parente. La version de l'enfant « redéfinit » (remplace) la version du parent.

Exemple simple :

Créez une classe parente avec une méthode :

class Vehicle {
  start() {
    return "Vehicle starting...";
  }
}

Créez une classe enfant qui étend le parent :

class Car extends Vehicle {
  // Ceci redéfinit la méthode start() de Vehicle
  start() {
    return "Car engine roaring to life!";
  }
}

Utilisez les classes :

const vehicle = new Vehicle();
const car = new Car();

console.log(vehicle.start());      // "Vehicle starting..." (original)
console.log(car.start());          // "Car engine roaring to life!" (redéfini)

Règles clés pour la redéfinition :

  1. Même nom de méthode que le parent
  1. Paramètres identiques ou compatibles
  1. La version de l'enfant est appelée sur les objets enfants
  1. Aucun mot-clé spécial n'est nécessaire - définissez simplement la méthode
challenge icon

Défi

On vous donne une classe parente Shape et une classe enfant Circle. La classe parente possède une méthode calculateArea() qui retourne 0.

Votre tâche consiste à surcharger la méthode calculateArea() dans la classe Circle pour calculer l'aire réelle d'un cercle.

La formule de l'aire d'un cercle est : π × rayon²
En JavaScript : Math.PI * this.radius * this.radius

Aide-mémoire

La redéfinition de méthode (method overriding) se produit lorsqu'une classe enfant fournit sa propre implémentation d'une méthode héritée d'une classe parente. La version de l'enfant remplace la version du parent.

Exemple :

class Vehicle {
  start() {
    return "Vehicle starting...";
  }
}

class Car extends Vehicle {
  // Redéfinit la méthode start() de Vehicle
  start() {
    return "Car engine roaring to life!";
  }
}

const vehicle = new Vehicle();
const car = new Car();

console.log(vehicle.start());  // "Vehicle starting..."
console.log(car.start());      // "Car engine roaring to life!"

Règles clés :

  • Utilisez le même nom de méthode que le parent
  • Utilisez des paramètres identiques ou compatibles
  • La version de l'enfant est appelée sur les objets enfants
  • Aucun mot-clé spécial n'est requis - définissez simplement la méthode dans la classe enfant

Essayez vous-même

import { Shape } from './shapes.js';
import { Circle } from './shapes.js';

// Testez votre implémentation
const myCircle = new Circle(5);
console.log(myCircle.calculateArea());
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