Tėvų metodų perrašymas OOP PHP

Paveldėjusi klasė gali perrašyti tėvo metodą, sukurdama metodą su tokiu pačiu pavadinimu. Pažiūrėkime pavyzdžiu. Tarkime, kad turime šią tėvinę klasę:

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

Paveldimoje klasėje sukurkime to paties pavadinimo metodą:

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

Paprastai, tėvų metodų perrašymas reikalingas tam, kad pakeistumėte arba papildytumėte šio metodo elgesį. Mūsų atveju pridėkime vardo ilgio patikrinimą:

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

Įsitikinkime, kad iškviečiamas būtent perrašytas metodas. Pirmiausia sukurkime paveldimos klasės objektą:

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

Dabar iškviestinėkime mūsų metodą, perduodami jam teisingą reikšmę:

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

O dabar iškviestinėkime metodą, perduodami jam neteisingą reikšmę. Rezultate pamatysime išmestą išimtį:

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

Klasėje User padarykite amžiaus getterį ir setterį.

Задание 2

Klasėje Employee perrašykite amžiaus setterį ir padarykite jame patikrinimą, kad amžius būtų nuo 18 iki 65 metų.