PHP да ООП да ота-синф усулларини қайта белгилаш

Синф-авлод отасининг усулини қайта белгилаши mumкин, шу ном билан усул яратиш орқали. Кeling, мисол билан кўрамиз. Бизда куйидаги ота синф мавжуд бўлсин:

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

Кeling, синф-авлодда шу ном билан усул яратамиз:

php<?php
  class Student extends User {
    public function setName($name) {
      
    }
  }
?>

Одатда, ота синф усулларини қайта белгилаш, шу усулнинг ишлашини ўзгартириш ёки тўлдириш учун керак бўлади. Кeling, бизнинг ҳолатимизда исм узунлигини текширишни қўшайлик:

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

Кeling, айнан қайта белгиланган усул чақирилишига ишонч ҳосил қилайлик. Бошлаш учун авлод синфнинг объектини яратамиз:

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

Энди бизнинг усулимизни чақирамиз, унга тўғри қиймат ўтказсак:

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

Энди эса усулни чақириб, унга нотўғри қиймат ўтказамиз. Натижада чиқарилган истиснони кўрамиз:

php<?php
  $student->setName(''); // хатолик
?>
Задание 1

User синфида ёш геттер ва сеттерини яратинг.

Задание 2

Employee синфида ёш сеттерини қайта белгиланг ва унда ёш 18 дан 65 гача эканини текширинг.