Proprietà private nell'ereditarietà in OOP in PHP

Le proprietà private non vengono ereditate. Ma le classi figlie possono manipolarle tramite i metodi pubblici della classe genitore. Vediamo come funziona nella pratica. Supponiamo di avere la seguente classe genitore con una proprietà privata e i suoi getter e setter:

php<?php
  class User {
    private $name;
    
    public function setName($name) {
      $this->name = $name;
    }
    public function getName() {
      return $this->name;
    }
  }
?>

Supponiamo che dalla classe genitore erediti la seguente classe figlia:

php<?php
  class Student extends User {
    
  }
?>

Creiamo un oggetto della classe figlia:

php<?php
  $student = new Student;
?>

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

php<?php
  $student->setName('john');
?>

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

php<?php
  $name = $student->getName();
  echo $name;
?>
Задание 1

Data la seguente classe genitore:

php<?php
  class User {
    private $name;
    private $surn;
    
    public function setName($name) {
      $this->name = $name;
    }
    public function getName() {
      return $this->name;
    }
    
    public function setSurn($surn) {
      $this->surn = $surn;
    }
    public function getSurn() {
      return $this->surn;
    }
  }
?>

Crea una classe Employee, che erediti da questo genitore.

Задание 2

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

Задание 3

Nella classe Employee crea il seguente metodo:

php<?php
  public function getFull() {
    return $this->name . ' ' . $this->surn;
  }
?>

Verifica che il codice del metodo porti a un errore.