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