Modifikaator protected TypeScriptis
Privaatsed omadused ja meetodid ei pärine
järglastelt. Mõnikord vajame aga, et
omadus või meetod ei oleks väliselt kättesaadav,
kuid oleks päritud järglaste poolt. Sel
juhul tuleks kasutada modifikaatorit
protected.
Proovime seda praktikas. Deklareerime oma
klassis User meetodi cape
kui kaitstud, kasutades modifikaatorit protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Teeme klassi Student, mis pärineb
klassist User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Lisame meetodi, mis kuvab nime:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Ja nüüd kasutame kaitstud meetodit vanemast klassi last klassi meetodi sees:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // kasutame vanema meetodit
}
}
Loome oma klassi objekti:
let student: Student = new Student('john');
Kasutame meetodit õpilase väljastamiseks:
console.log(student.showName());
Kuid katse kutsuda meetodit cape
klassist väljapoolt viib veani:
console.log(student.cape('test')); // viga
Antud on järgmine klass:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Pärinege sellest klassist klass Employee,
mis lisab kaitstud omaduse salary,
ning getterid kõikidele omadustele, nii enda
kui ka päritud omadustele.