Modifikator protected v TypeScript
Zasebne lastnosti in metode niso podedovane
s strani potomcev. Včasih pa potrebujemo, da
lastnost ali metoda ni dostopna od zunaj,
vendar je podedovana s strani potomcev. V tem
primeru je treba uporabiti modifikator
protected.
Poskusimo v praksi. V našem razredu User
deklarirajmo metodo cape
kot zaščiteno z uporabo modifikatorja protected:
typescriptclass User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Naredimo razred Student, ki
podeduje od razreda User:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Dodajmo metodo, ki izpiše ime:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
In zdaj uporabimo zaščiteno metodo starša znotraj metode potomca:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // uporabimo metodo starša
}
}
Ustvarimo objekt našega razreda:
typescriptlet student: Student = new Student('john');
Uporabimo metodo za izpis študenta:
typescriptconsole.log(student.showName());
Poskus klica metode cape
zunaj razreda pa bo povzročil napako:
typescriptconsole.log(student.cape('test')); // napaka
Podan je naslednji razred:
typescriptclass User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Podedujte od tega razreda razred Employee,
ki bo dodal zaščiteno lastnost salary,
ter getterje vseh lastnosti, tako lastnih
kot podedovanih.