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:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Creiamo una classe Student, che eredita
dalla classe User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Aggiungiamo un metodo che visualizzi il nome:
class 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:
class 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:
let student: Student = new Student('john');
Utilizziamo il metodo per visualizzare lo studente:
console.log(student.showName());
Mentre un tentativo di chiamare il metodo cape
dall'esterno della classe causerà un errore:
console.log(student.cape('test')); // errore
Data la seguente classe:
class 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.