Modifikátor protected v TypeScript
Privátní vlastnosti a metody nejsou děděny
potomky. Někdy však potřebujeme, aby
vlastnost nebo metoda nebyla přístupná zvenčí,
ale byla děděna potomky. V tomto
případě bychom měli použít modifikátor
protected.
Pojďme to vyzkoušet v praxi. Deklarujme v
naší třídě User metodu cape
jako chráněnou pomocí modifikátoru protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Vytvořme třídu Student, která dědí
od třídy User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Přidejme metodu, která vypisuje jméno:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
A nyní použijme chráněnou metodu rodiče uvnitř metody potomka:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // použijeme metodu rodiče
}
}
Vytvořme objekt naší třídy:
let student: Student = new Student('john');
Použijme metodu pro výpis studenta:
console.log(student.showName());
Pokus o volání metody cape
mimo třídu však povede k chybě:
console.log(student.cape('test')); // chyba
Je dána následující třída:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Dědejte z této třídy třídu Employee,
která přidá chráněnou vlastnost salary,
a také gettery všech vlastností, jak svých,
tak i děděných.