Преоптеређивање метода родитеља у ООП у 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 {
    public function setName($name) {
      
    }
  }
?>

У принципу, преоптеређење метода родитеља је потребно да би се променило или допунило понашање тог метода. Хајде да у нашем случају додамо проверу дужине имена:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'student name error';
      }
    }
  }
?>

Хајде да се уверимо да се позива управо преоптеређени метод. За почетак креирајмо објекат класе потомка:

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

Сада ћемо позвати наш метод, проследивши у њега исправну вредност:

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

А сада ћемо позвати метод, проследивши у њега неисправну вредност. Као резултат видећемо изазвани изузетак:

php<?php
  $student->setName(''); // грешка
?>
Задание 1

У класи User направите гетер и сетер за старост.

Задание 2

У класи Employee преоптеређите сетер за старост и у њему направите проверу да ли је старост од 18 до 65 година.