L’héritage permet aux classes d’hériter des spécificités d’autres classes. Autrement dit, les classes parents étendent leurs attributs et méthodes aux classes enfants.
Si des attributs ou méthodes basiques sont définies dans la classe parente, les classes enfant peuvent étendre ce fonctionnement et le rendre plus spécifique.
L’avantage etant donc de creer des classes parentes génériques , puis des classes enfant de + en + spécifiques.
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
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"
<aside>
💡 Le mot-clé **super**est utilisé afin d'appeler ou d'accéder à des fonctions définies sur l'objet parent
</aside>
Autre exemple :
// base-view-component
constructor(coreServicesProvider : CoreServicesProvider,
a_viewParams? : ViewParams,
a_service?: BaseListHttpService<ListBean> | BaseHttpService<SingleBean, ListBean> | VirtualListServiceBuilder,
a_modalService? : MsModalService) {
super(coreServicesProvider);
this.service=a_service;
this.viewParams=a_viewParams;
this.modalService=a_modalService;
}
// base-view-with-std-action extends base-view-component
constructor(coreServicesProvider : CoreServicesProvider,
a_viewParams? : ViewParams,
a_service?: BaseListHttpService<ListBean> | BaseHttpService<SingleBean, ListBean> | VirtualListServiceBuilder,
a_modalService? : MsModalService) {
super(coreServicesProvider,a_viewParams,a_service,a_modalService);
}
// ecran de liste final extends base-view-with-std-action
constructor(paramAliasService: ParamAliasService) {
super(paramAliasService, {emptyParams: {message:'app.admin.entite.admin.alias.pasdalias', icon: 'fas fa-bug'},
id: 'id_AliasR', searchFields: ['libelle_AliasR'], updateModalParams: {modalComponent:ParamAliasModalComponent,
dataParams: {dataType: ViewDataType.UPDATE, beanIds: ['id_AliasR'], hasApiParam: true}}},
{createModalParams: {modalComponent: ParamAliasModalComponent,
dataParams: {dataType: ViewDataType.CREATE, beanIds: ['id_AliasR'], hasApiParam: false}}});
}