Prywatne właściwości przy dziedziczeniu w OOP w JavaScript

Prywatne właściwości nie są dziedziczone. Ale potomek może manipulować nimi poprzez publiczne metody rodzica. Spójrzmy na to w praktyce. Załóżmy, że mamy następującą klasę-rodzica z prywatną właściwością oraz jej getterem i setterem:

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

Załóżmy, że od rodzica dziedziczy następujący potomek:

javascriptclass Student extends User {
  
}

Stwórzmy obiekt potomka:

javascriptlet student = new Student;

Skorzystajmy z metody rodzica, aby zapisać jego prywatną właściwość:

javascriptstudent.setName('john');

Skorzystajmy z metody rodzica, aby odczytać jego prywatną właściwość:

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

Dana jest następująca klasa-rodzic:

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

Stwórz klasę Employee, która będzie dziedziczyć od tego rodzica.

Задание 2

Utwórz obiekt klasy Employee i wywołaj odziedziczone settery i gettery.

Задание 3

W klasie Employee stwórz następującą metodę:

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

Upewnij się, że kod metody prowadzi do błędu.