Métodos privados na herança em POO em JavaScript
Métodos privados não são herdados. Isso é feito intencionalmente para não violar o encapsulamento. Vamos ver um exemplo. Suponha que temos a seguinte classe pai com um método privado:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.#capeFirst(this.name);
}
#capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Suponha que a seguinte classe herda da classe pai:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.surn;
}
}
Suponha que a classe filha queira usar o método privado da classe pai. O JavaScript não permitirá isso e retornará um erro:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.#capeFirst(this.surn); // haverá um erro
}
}
Tente na classe Employee
usar o método privado
da classe pai.