Le polymorphisme consiste à concevoir des objets pour partager des comportements.
En utilisant l’hértitage , les instances peuvent override les comportements des parents avec du comportement spécifique aux enfants
Le polymorphisme autorise la meme méthode a avoir des comportements différents in two ways: method overriding and method overloading.
Overriding
class VoitureSport extends Voiture {
public vitesseMax;
constructor(marque: string, couleur: string, poids: number, prix: number, vitesseMax: number) {
super(marque)
super(couleur)
super(poids)
super(prix)
this.vitesseMax = vitesseMax;
}
// par default on va hériter de toutes les methodes et propriétés de la classe parente
// SURCHARGE (overriding)
rouler() {
console.log("Vroum vrouuuum");
}
seGarer() {
// on peux aussi utiliser super pour les méthodes , dans ce cas on va executer la méthode
// de la classe parente puis la suite ...
super.seGarer();
console.log('Garée deuxieme fois');
}
}
const ferrari = new VoitureSport('Ferrari', 'Rouge', 1200, 250000, 350)
ferrari.seGarer()
==> "Garée Garée une deuxieme fois"
overloading
class Voiture {
// ATTRIBUTS
public marque: string;
public couleur: string;
public poids: number;
public prix: number;
constructor(_couleur: string, _poids: number, _prix: number) {
this.couleur=_couleur;
this.poids=_poids;
this.prix=_prix;
}
// METHODES
public function rouler() {
// do something
console.log(this.marque + " Vroum")
}
public function rouler(vitesseMax: number) {
// do something
console.log(`Rouler a ${vitesseMax}km/h`)
}
public function seGarer() {
console.log('Garée');
}
}