Métodos Protegidos em POO em JavaScript
Métodos privados não são herdados e não são visíveis fora da classe. No entanto, às vezes são necessários métodos que são herdados, mas não são visíveis fora da classe. Tais métodos são chamados de protegidos (protected). JavaScript, infelizmente, não suporta tais métodos.
Portanto, proponho introduzir uma convenção que permita criar tais métodos. Vamos começar os nomes desses métodos com um sublinhado. Na prática, usaremos a antiga convenção amplamente aceita de métodos privados. Só que chamamos tais métodos de protegidos para indicar que eles são herdados, mas não os usaremos fora da classe. No entanto, é exatamente assim que eles são usados de acordo com a antiga convenção.
Então, vamos escrever uma classe pai com um método protegido:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Vamos usar este método protegido na classe filha:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
No código a seguir, torne o método auxiliar protegido:
class User {
setName(name) {
if (this._notEmpty(name)) {
this.name = name;
}
}
getName() {
return this.name;
}
_notEmpty(str) {
return str.length > 0;
}
}
class Employee extends User {
setSurn(surn) {
if (this._notEmpty(surn)) {
this.surn = surn;
}
}
getSurn() {
return this.surn;
}
}