Privátne vlastnosti pri dedení v OOP v PHP

Privátne vlastnosti nie sú dedené. Ale potomok s nimi môže manipulovať cez verejné metódy rodiča. Pozrime sa na to v praxi. Nech máme nasledujúcu triedu-rodiča s privátnou vlastnosťou a jej getterom a setterom:

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

Nech od rodiča dedí nasledujúci potomok:

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

Vytvorme objekt potomka:

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

Využime metódu rodiča, aby sme zapísali jeho privátnu vlastnosť:

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

Využime metódu rodiča, aby sme prečítali jeho privátnu vlastnosť:

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

Daná je nasledujúca trieda-rodič:

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

Vytvorte triedu Employee, ktorá bude dediť od tohto rodiča.

Задание 2

Vytvorte objekt triedy Employee a zavolajte zdedené settery a gettery.

Задание 3

V triede Employee vytvorte nasledujúcu metódu:

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

Presvedčte sa, že kód metódy povedie k chybe.