Modificador protected em TypeScript
Propriedades e métodos privados não são herdados
por classes filhas. No entanto, às vezes precisamos que
uma propriedade ou método não esteja acessível externamente,
mas seja herdado pelas classes filhas. Nesse
caso, devemos usar o modificador
protected
.
Vamos experimentar na prática. Vamos declarar no
nosso classe User
o método cape
como protegido usando o modificador protected
:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Vamos fazer a classe Student
, que herda
da classe User
:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Vamos adicionar um método que exibe o nome:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
E agora vamos usar o método protegido da classe pai dentro de um método da classe filha:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // usando o método da classe pai
}
}
Vamos criar um objeto da nossa classe:
let student: Student = new Student('john');
Vamos usar o método para exibir o nome do estudante:
console.log(student.showName());
Mas uma tentativa de chamar o método cape
de fora da classe resultará em um erro:
console.log(student.cape('test')); // erro
Dada a seguinte classe:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Herde desta classe a classe Employee
,
que adicionará uma propriedade protegida salary
,
assim como getters para todas as propriedades, tanto suas
quanto as herdadas.