Modificatore protected in TypeScript
Le proprietà e i metodi privati non vengono ereditati
dalle classi figlie. A volte, tuttavia, abbiamo bisogno che
una proprietà o un metodo non siano accessibili dall'esterno,
ma siano ereditati dalle classi figlie. In questo
caso dovrebbe essere utilizzato il modificatore
protected.
Proviamo nella pratica. Dichiariamo nella
nostra classe User un metodo cape
come protetto usando il modificatore protected:
typescriptclass User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Creiamo una classe Student, che eredita
dalla classe User:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Aggiungiamo un metodo che visualizzi il nome:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
E ora utilizziamo il metodo protetto del genitore all'interno di un metodo della classe figlia:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // utilizziamo il metodo del genitore
}
}
Creiamo un oggetto della nostra classe:
typescriptlet student: Student = new Student('john');
Utilizziamo il metodo per visualizzare lo studente:
typescriptconsole.log(student.showName());
Mentre un tentativo di chiamare il metodo cape
dall'esterno della classe causerà un errore:
typescriptconsole.log(student.cape('test')); // errore
Data la seguente classe:
typescriptclass User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Eredita da questa classe una classe Employee,
che aggiungerà una proprietà protetta salary,
così come i getter di tutte le proprietà, sia proprie,
che ereditate.