Přepsání metod rodiče v OOP v PHP
Třída potomek může přepsat metodu rodiče vytvořením metody se stejným názvem. Podívejme se na příklad. Předpokládejme, že máme následující rodičovskou třídu:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Vytvořme v třídě potomkovi metodu se stejným názvem:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Přepsání metod rodiče obvykle slouží k tomu, aby se změnilo nebo doplnilo chování této metody. V našem případě přidejme kontrolu délky jména:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Přesvědčme se, že je volána právě přepsaná metoda. Nejprve vytvořme objekt třídy potomka:
<?php
$student = new Student;
?>
Nyní zavolejme naši metodu, předáme-li jí korektní hodnotu:
<?php
$student->setName('john');
?>
A nyní zavolejme metodu, předáme-li jí nekorektní hodnotu. Výsledkem uvidíme vyhozenou výjimku:
<?php
$student->setName(''); // chyba
?>
Ve třídě User vytvořte
getter a setter věku.
Ve třídě Employee přepište
setter věku a proveďte v něm
kontrolu, že věk je od
18 do 65 let.