Пренаписване на родителски методи в ООП в 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 години.