Meetodite ülekirjutamine PHP OOP-s

Alamklass saab üle kirjutada vanema meetodi, luues meetodi sama nimega. Vaatame seda näite varal. Olgu meil järgmine vanemaklass:

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

Loome alamklassis samanimelise meetodi:

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

Tavaliselt on vanema meetodite ülekirjutamine vajalik selleks, et muuta või täiendada selle meetodi käitumist. Meie puhul lisame nime pikkuse kontrolli:

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

Veendume, et kutsutakse välja just ülekirjutatud meetod. Alustuseks loome alamklassi objekti:

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

Nüüd kutsume välja oma meetodi, andes sellele korrektse väärtuse:

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

Nüüd kutsume meetodi välja, andes sellele mittekorrektse väärtuse. Tulemusena näeme välja visatud erindit:

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

Klassis User tehke vanuse getter ja setter.

Задание 2

Klassis Employee kirjutage üle vanuse setter ja tehke selles kontroll, et vanus oleks 18 kuni 65 aastat.