Мадыфікатар protected у TypeScript
Прыватныя ўласцівасці і метады не наследуются
нашчадкамі. Часам, аднак, нам трэба, каб
уласцівасць або метад не былі даступныя звонку,
але былі ўспадкоўваныя нашчадкамі. У гэтым
выпадку варта выкарыстоўваць мадыфікатар
protected.
Давайце паспрабуем на практыцы. Аб'явім у
нашаім класе User метад cape
як абаронены з дапамогай мадыфікатара protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Зробім клас Student, які наследуе
ад класа User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Дададзім метад, які выводзіць імя:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
А цяпер выкарыстаем абаронены метад бацькі ўнутры метаду нашчадка:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // выкарыстоўваем метад бацькі
}
}
Створым аб'ект нашага класа:
let student: Student = new Student('john');
Скарыстаемся метадам для вываду студэнта:
console.log(student.showName());
А вось спроба выклікаць метад cape
звонку прывядзе да памылкі:
console.log(student.cape('test')); // памылка
Дадзены наступны клас:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Успадкуйце ад гэтага класа клас Employee,
які дадасць абароненую ўласцівасць salary,
а таксама геттеры ўсіх уласцівасцей, як сваіх,
так і ўспадкоўваных.