Пераазначэнне метадаў бацькі ў ААП у 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 гадоў.