Приватные свойства при наследовании в ООП в JavaScript

Приватные свойства не наследуются. Но потомок может манипулировать ими через публичные методы родителя. Давайте посмотрим на практике. Пусть у нас есть следующий класс-родитель с приватным свойством и его геттером и сеттом:

javascriptclass User {
  #name;
  
  setName(name) {
    this.#name = name;
  }
  getName() {
    return this.#name;
  }
}

Пусть от родителя наследует следующий потомок:

javascriptclass Student extends User {
  
}

Создадим объект потомка:

javascriptlet student = new Student;

Воспользуемся методом родителя, чтобы записать его приватное свойство:

javascriptstudent.setName('john');

Воспользуемся методом родителя, чтобы прочитать его приватное свойство:

javascriptlet name = student.getName();
console.log(name);
Задание 1

Дан следующий класс-родитель:

javascriptclass User {
  #name;
  #surn;
  
  setName(name) {
    this.#name = name;
  }
  getName() {
    return this.#name;
  }
  
  setSurn(surn) {
    this.#surn = surn;
  }
  getSurn() {
    return this.#surn;
  }
}

Сделайте класс Employee, который будет наследовать от этого родителя.

Задание 2

Создайте объект класса Employee и вызовите унаследованные сеттеры и геттеры.

Задание 3

В классе Employee сделайте следующий метод:

javascriptgetFull() {
  return this.#name + ' ' + this.#surn;
}

Убедитесь, что код метода приведет к ошибке.