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 :
- Même nom de méthode que le parent
- Paramètres identiques ou compatibles
- La version de l'enfant est appelée sur les objets enfants
- Aucun mot-clé spécial n'est nécessaire - définissez simplement la méthode
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());
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