Приватные методы при наследовании в ООП в 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 воспользоваться приватным методом родителя.



Чат с GPT Компилятор