Protected-modifikaattori TypeScriptissä
Yksityiset ominaisuudet ja metodit eivät periydy
jalostajaluokkiin. Joskus kuitenkin tarvitsemme, että
ominaisuus tai metodi eivät olisi saatavilla ulkopuolelta,
mutta periytyisivät jalostajaluokkiin. Tässä
tapauksessa tulisi käyttää modifikaattoria
protected.
Kokeillaan käytännössä. Määritellään
luokassamme User metodi cape
suojatuksi käyttämällä modifikaattoria protected:
typescriptclass User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Tehdään luokka Student, joka perii
luokalta User:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Lisätään metodi, joka tulostaa nimen:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Ja nyt käytetään suojattua kantaluokan metodia jalostajaluokan metodin sisällä:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // käytetään kantaluokan metodia
}
}
Luodaan olio luokastamme:
typescriptlet student: Student = new Student('john');
Käytetään metodia opiskelijan tulostamiseksi:
typescriptconsole.log(student.showName());
Mutta yritys kutsua metodia cape
luokan ulkopuolelta johtaa virheeseen:
typescriptconsole.log(student.cape('test')); // virhe
Annettu seuraava luokka:
typescriptclass User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Peri tästä luokasta luokka Employee,
joka lisää suojatun ominaisuuden salary,
sekä getterit kaikille ominaisuuksille, sekä omille
että perityille.