Proprietà private nell'ereditarietà in OOP in JavaScript

Le proprietà private non vengono ereditate. Ma la classe figlia può manipolarle tramite i metodi pubblici della classe genitore. Vediamo come funziona nella pratica. Supponiamo di avere la seguente classe genitore con una proprietà privata, il suo getter e setter:

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

Supponiamo che dalla classe genitore erediti la seguente classe figlia:

javascriptclass Student extends User {
  
}

Creiamo un oggetto della classe figlia:

javascriptlet student = new Student;

Utilizziamo il metodo della classe genitore per impostare la sua proprietà privata:

javascriptstudent.setName('john');

Utilizziamo il metodo della classe genitore per leggere la sua proprietà privata:

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

Data la seguente classe genitore:

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

Crea la classe Employee, che erediterà da questo genitore.

Задание 2

Crea un oggetto della classe Employee e chiama i setter e getter ereditati.

Задание 3

Nella classe Employee crea il seguente metodo:

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

Verifica che il codice del metodo porti a un errore.