Приватные методы при наследовании в ООП в JavaScript
Приватные методы не наследуются. Это сделано специально, чтобы не нарушать инкапсуляцию. Давайте посмотрим на примере. Пусть у нас есть следующий родительский класс с приватным методом:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.#capeFirst(this.name);
}
#capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Пусть от родительского класса наследует следующий класс:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.surn;
}
}
Пусть потомок хочет воспользоваться приватным методом родителя. JavaScript это не разрешит и выдаст ошибку:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.#capeFirst(this.surn); // будет ошибка
}
}
Попробуйте в классе Employee
воспользоваться приватным методом
родителя.