Modifikatorius protected TypeScript kalba
Privatūs savybės ir metodai nepaveldimi
pavaldiniais. Kartais, tačiau, mums reikia, kad
savybė ar metodas nebūtų prieinami iš išorės,
bet būtų paveldimi pavaldiniais. Tokiu
atveju reikėtų naudoti modifikatorių
protected.
Išbandykime praktiškai. Apibrėžkime savo
klasėje User metodą cape
kaip apsaugotą naudodami modifikatorių protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Sukurkime klasę Student, paveldinčią
iš klasės User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Pridėkime metodą, rodantį vardą:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
O dabar panaudokime apsaugotą metodą tėvinės klasės viduje pavaldinio metodo:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // naudojame tėvinės klasės metodą
}
}
Sukurkime savo klasės objektą:
let student: Student = new Student('john');
Naudokimės metodu studento atvaizdavimui:
console.log(student.showName());
Tačiau bandymas iškviesti metodą cape
iš išorės sukels klaidą:
console.log(student.cape('test')); // klaida
Pateikta ši klasė:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Paveldėkite iš šios klasės klasę Employee,
kuri pridės apsaugotą savybę salary,
taip pat visų savybių, tiek savų,
tiek paveldėtų, getter'ius.