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:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Naredimo razred Student, ki
podeduje od razreda User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Dodajmo metodo, ki izpiše ime:
class 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:
class 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:
let student: Student = new Student('john');
Uporabimo metodo za izpis študenta:
console.log(student.showName());
Poskus klica metode cape
zunaj razreda pa bo povzročil napako:
console.log(student.cape('test')); // napaka
Podan je naslednji razred:
class 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.