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
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
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
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
$student = new Student;
?>
Most hívjuk meg a metódusunkat, átadva neki egy helyes értéket:
<?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
$student->setName(''); // hiba
?>
A User osztályban készítsen
gettert és settert a korhoz.
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.