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:
typescriptclass User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Să facem clasa Student, care moștenește
din clasa User:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Să adăugăm o metodă care afișează numele:
typescriptclass 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:
typescriptclass 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:
typescriptlet student: Student = new Student('john');
Să folosim metoda pentru afișarea studentului:
typescriptconsole.log(student.showName());
Însă o încercare de a apela metoda cape
din exteriorul clasei va duce la o eroare:
typescriptconsole.log(student.cape('test')); // eroare
Este dată următoarea clasă:
typescriptclass 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.