Privátní vlastnosti při dědění v OOP v PHP

Privátní vlastnosti nejsou děděny. Ale potomek s nimi může manipulovat prostřednictvím veřejných metod rodiče. Podívejme se na to v praxi. Předpokládejme, že máme následující rodičovskou třídu s privátní vlastností a její getter a setter:

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

Předpokládejme, že z rodiče dědí následující potomek:

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

Vytvořme objekt potomka:

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

Použijme metodu rodiče, abychom zapsali jeho privátní vlastnost:

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

Použijme metodu rodiče, abychom přečetli jeho privátní vlastnost:

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

Je dána následující rodičovská třída:

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

Vytvořte třídu Employee, která bude dědit od tohoto rodiče.

Задание 2

Vytvořte objekt třídy Employee a zavolejte zděděné settery a gettery.

Задание 3

V třídě Employee vytvořte následující metodu:

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

Přesvědčte se, že kód metody povede k chybě.