Modifikátor protected v TypeScript
Súkromné vlastnosti a metódy nie sú dedené
potomkami. Niekedy však potrebujeme, aby
vlastnosť alebo metóda neboli prístupné zvonku,
ale boli zdedené potomkami. V tomto
prípade by sme mali použiť modifikátor
protected.
Vyskúšajme to v praxi. Deklarujme v
našej triede User metódu cape
ako chránenú pomocou modifikátora protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Vytvorme triedu Student, ktorá dedí
od triedy User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Pridajme metódu, ktorá zobrazí meno:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
A teraz použime chránenú metódu rodiča vo vnútri metódy 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 metódu rodiča
}
}
Vytvorme objekt našej triedy:
let student: Student = new Student('john');
Použime metódu na zobrazenie študenta:
console.log(student.showName());
Pokus o volanie metódy cape
zvonku triedy však spôsobí chybu:
console.log(student.cape('test')); // chyba
Daná je nasledujúca trieda:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Zdedte z tejto triedy triedu Employee,
ktorá pridá chránenú vlastnosť salary,
ako aj gettery všetkých vlastností, ako svojich,
tak aj zdedených.