Modificatorul protected în TypeScript
Proprietățile și metodele private nu sunt moștenite
de clasele descendente. Uneori, totuși, avem nevoie ca
o proprietate sau o metodă să nu fie accesibilă din exterior,
dar să fie moștenită de descendenti. În acest
caz, ar trebui să folosim modificatorul
protected.
Să încercăm în practică. Să declarăm în
clasa noastră User metoda cape
ca fiind protejată cu ajutorul modificatorului protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Să facem clasa Student, care moștenește
din clasa User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Să adăugăm o metodă care afișează numele:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Și acum să folosim metoda protejată a părintelui în interiorul metodei descendentului:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // folosim metoda părintelui
}
}
Să creăm un obiect al clasei noastre:
let student: Student = new Student('john');
Să folosim metoda pentru afișarea studentului:
console.log(student.showName());
Însă o încercare de a apela metoda cape
din exteriorul clasei va duce la o eroare:
console.log(student.cape('test')); // eroare
Este dată următoarea clasă:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Moșteniți din această clasă clasa Employee,
care va adăuga o proprietate protejată salary,
precum și getteri pentru toate proprietățile, atât cele proprii,
cât și cele moștenite.