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

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

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

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

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

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

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

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

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

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

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

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

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;
    }
  }
?>

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

Задание 2

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

Задание 3

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

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

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