Le modificateur protected dans TypeScript
Les propriétés et méthodes privées ne sont pas héritées
par les descendants. Cependant, parfois, nous avons besoin qu'une
propriété ou méthode ne soit pas accessible de l'extérieur,
mais soit héritée par les descendants. Dans ce
cas, il convient d'utiliser le modificateur
protected.
Essayons en pratique. Déclarons dans
notre classe User une méthode cape
comme protégée à l'aide du modificateur protected :
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Créons une classe Student, héritant
de la classe User :
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Ajoutons une méthode affichant le nom :
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Et maintenant, utilisons la méthode protégée du parent à l'intérieur d'une méthode du descendant :
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // utilisons la méthode du parent
}
}
Créons un objet de notre classe :
let student: Student = new Student('john');
Utilisons la méthode pour afficher l'étudiant :
console.log(student.showName());
En revanche, une tentative d'appeler la méthode cape
de l'extérieur de la classe entraînera une erreur :
console.log(student.cape('test')); // erreur
La classe suivante est donnée :
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Héritez de cette classe une classe Employee,
qui ajoutera une propriété protégée salary,
ainsi que des getters pour toutes les propriétés, les siennes
et celles héritées.