Overriding на родителски методи во ООП во PHP

Класата-потомок може да го override-ира методот на родителот, со креирање на метод со исто име. Ајде да погледнеме на пример. Нека имаме следнава родителска класа:

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) {
      
    }
  }
?>

Вообичаено, override-ирање на методи на родителот е потребно за да се смени или дополни однесувањето на тој метод. Ајде во нашиот случај да додадеме проверка на должината на името:

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

Ајде да се увериме дека се повикува токму override-ираниот метод. Прво, ајде да креираме објект од класата-потомок:

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

Сега ајде да го повикаме нашиот метод, пренесувајќи во него коректна вредност:

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

А сега ајде да го повикаме методот, пренесувајќи во него некоректна вредност. Како резултат ќе видиме фрлена исклучок:

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

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

Задание 2

Во класата Employee override-ирајте го сетерот за возраста и направете во него проверка дали возраста е од 18 до 65 години.