Une caractéristique importante des langages de programmation orientés objet comme JavaScript est leur capacité à prendre en charge l'héritage. L'héritage est un mécanisme qui permet à une classe d'acquérir ou d'hériter des propriétés et des méthodes d'une autre classe. En ES6, l'héritage de classe est réalisé en utilisant le mot clé extends
.
La bonne syntaxe pour créer une classe qui étend une autre classe en ES6 est class SubClass extends BaseClass {}
.
Regardons un exemple concret pour mieux comprendre :
class BaseClass {
constructor(name) {
this.name = name;
}
greet() {
return `Bonjour, ${this.name}!`;
}
}
class SubClass extends BaseClass {
constructor(name, age) {
super(name);
this.age = age;
}
greet() {
return `Bonjour, ${this.name}, vous avez ${this.age} ans`;
}
}
let obj = new SubClass("Michel", 45);
console.log(obj.greet());
Dans l'exemple ci-dessus, SubClass
est une classe qui étend BaseClass
, en utilisant le mot clé extends
. Le mot clé super
est utilisé dans le constructeur de SubClass
pour appeler le constructeur de la classe parent BaseClass
. La méthode greet
dans SubClass
écrase ou remplace la méthode greet
dans BaseClass
.
Il est important de noter que la classe de base doit être définie avant la sous-classe, sinon une erreur ReferenceError sera levée.
De plus, lors de l'extension d'une classe, toutes les méthodes, y compris les méthodes de cycle de vie d'une classe s'il s'agit d'un composant React, seront héritées. L'héritage peut être un excellent moyen de réutiliser le code dans certaines situations, mais il est généralement préférable d'utiliser la composition à la place, car elle offre une plus grande flexibilité et est généralement plus facile à gérer en termes de relecture, d'écriture et de débogage du code. Enfin, vous devriez éviter d'étendre les classes intégrées sans une très bonne raison.