Propriedades privadas na herança em POO em JavaScript

Propriedades privadas não são herdadas. Mas o descendente pode manipulá-las através de métodos públicos do pai. Vamos ver na prática. Suponha que temos a seguinte classe-pai com uma propriedade privada e seu getter e setter:

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

Suponha que a seguinte classe descendente herda do pai:

javascriptclass Student extends User {
  
}

Vamos criar um objeto descendente:

javascriptlet student = new Student;

Vamos usar o método do pai para definir sua propriedade privada:

javascriptstudent.setName('john');

Vamos usar o método do pai para ler sua propriedade privada:

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

É dada a seguinte classe-pai:

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

Faça a classe Employee, que herdará deste pai.

Задание 2

Crie um objeto da classe Employee e chame os setters e getters herdados.

Задание 3

Na classe Employee, faça o seguinte método:

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

Certifique-se de que o código do método levará a um erro.