Modifikator protected u TypeScript-u
Privatna svojstva i metode se ne nasleđuju
od potomaka. Međutim, ponekad nam je potrebno da
svojstvo ili metod ne budu dostupni spolja,
ali da budu nasleđeni od potomaka. U ovom
slučaju treba koristiti modifikator
protected.
Hajde da isprobamo u praksi. Deklarišimo u
našoj klasi User metod cape
kao zaštićeni pomoću modifikatora protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Napravimo klasu Student, koja nasleđuje
od klase User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Dodajmo metod koji ispisuje ime:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
A sada upotrebimo zaštićeni metod roditelja unutar metoda potomka:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // koristimo metod roditelja
}
}
Kreirajmo objekat naše klase:
let student: Student = new Student('john');
Iskoristimo metod za ispis studenta:
console.log(student.showName());
Međutim, pokušaj da se pozove metod cape
spolja klase će dovesti do greške:
console.log(student.cape('test')); // greška
Data je sledeća klasa:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Nasledite od ove klase klasu Employee,
koja će dodati zaštićeno svojstvo salary,
kao i gettere svih svojstava, kako svojih,
tako i nasleđenih.