Szülő osztály metódusainak felülírása OOP-ban PHP-ben

Egy gyermekosztály felülírhatja a szülő metódusát egy azonos nevű metódus létrehozásával. Nézzük ezt egy példán keresztül. Tegyük fel, hogy a következő szülőosztályunk van:

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

Hozzunk létre egy azonos nevű metódust a gyermekosztályban:

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

Általában a szülő metódusok felülírása azért szükséges, hogy megváltoztassuk vagy kiegészítsük a metódus viselkedését. Esetünkben adjunk hozzá egy ellenőrzést a név hosszára:

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

Győződjünk meg arról, hogy valóban a felülírt metódus hívódik meg. Először hozzunk létre egy objektumot a gyermekosztályból:

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

Most hívjuk meg a metódusunkat, átadva neki egy helyes értéket:

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

Most pedig hívjuk meg a metódust, átadva neki egy helytelen értéket. Ennek eredményeképpen egy kivételt fogunk látni:

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

A User osztályban készítsen gettert és settert a korhoz.

Задание 2

A Employee osztályban írja felül a kor setterét és végezzen benne ellenőrzést, hogy a kor 18 és 65 év között legyen.