Modyfikator protected w TypeScript
Prywatne właściwości i metody nie są dziedziczone
przez klasy potomne. Czasami jednak potrzebujemy, aby
właściwość lub metoda nie były dostępne z zewnątrz,
ale były dziedziczone przez potomków. W tym
przypadku należy użyć modyfikatora
protected.
Wypróbujmy to w praktyce. Zadeklarujmy w
naszej klasie User metodę cape
jako chronioną za pomocą modyfikatora protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Stwórzmy klasę Student, dziedziczącą
po klasie User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Dodajmy metodę wyświetlającą imię:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
A teraz użyjmy chronionej metody rodzica wewnątrz metody potomka:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // używamy metody rodzica
}
}
Stwórzmy obiekt naszej klasy:
let student: Student = new Student('john');
Skorzystajmy z metody, aby wyświetlić studenta:
console.log(student.showName());
Natomiast próba wywołania metody cape
na zewnątrz klasy spowoduje błąd:
console.log(student.cape('test')); // błąd
Dana jest następująca klasa:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Odziedzicz po tej klasie klasę Employee,
która doda chronioną właściwość salary,
a także gettery wszystkich właściwości, zarówno swoich,
jak i odziedziczonych.