Преоптеређивање метода родитеља у ООП у PHP
Класа-потомак може да преоптеређује метод родитеља, креирајући метод са истим именом. Хајде да погледамо на примеру. Нека имамо следећу родитељску класу:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Хајде да у класи-потомку креирамо именски исти метод:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
У принципу, преоптеређење метода родитеља је потребно да би се променило или допунило понашање тог метода. Хајде да у нашем случају додамо проверу дужине имена:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Хајде да се уверимо да се позива управо преоптеређени метод. За почетак креирајмо објекат класе потомка:
<?php
$student = new Student;
?>
Сада ћемо позвати наш метод, проследивши у њега исправну вредност:
<?php
$student->setName('john');
?>
А сада ћемо позвати метод, проследивши у њега неисправну вредност. Као резултат видећемо изазвани изузетак:
<?php
$student->setName(''); // грешка
?>
У класи User направите
гетер и сетер за старост.
У класи Employee преоптеређите
сетер за старост и у њему направите
проверу да ли је старост од
18 до 65 година.