Наследование
Наследование — присвоние классу всех методов и свойств другого класса.
Наследовать класс можно через оператор extends
.
class ClassParent { public function getPHPVersion() { return PHP_VERSION; } } class ClassChild extends ClassParent {} $myobj = new ClassChild(); echo $myobj->getPHPVersion(); // 7.4.14
На примере выше видно, что объект ClassChild
был создан пустым (без свойств и методов), но при этом он может использовать свойства и методы объекта ClassParent
. Это и есть механизм «наследования».
Наследовать можно только один класс.
Классы не могут наследовать свойства и методы, созданные через модификатор private
.
Расширить наследуемый метод
Если надо расширить наследуемый метод, то чтобы не писать заново код в дочернем классе, можно воспользоваться ключевым словом parent
.
class ClassParent { public $version; public function getPHPVersion() { $this->version = PHP_VERSION; return $this->version; // 7.4.14 } } class ClassChild extends ClassParent { public function getPHPVersion() { // выполняется код наследуемого метода parent::getPHPVersion(); return 'Версия PHP '.$this->version; // Версия PHP 7.4.14 } } $myobj = new ClassChild(); echo $myobj->getPHPVersion(); // Версия PHP 7.2.14
Если бы ключевое слово parent
не использовался, то метод вернул бы просто «Версия PHP».
Запретить наследовать класс
Чтобы запретить наследовать класс, его надо объявить модификатором final
.
final class myObj {}
Проверить, является ли класс дочерним к указанному классу
Проверить, что текущий объект наследуется от указанного класса, можно через функцию is_subclass_of()
.
class ClassParent {} class ClassChild extends ClassParent {}; $myobj = new ClassChild(); // Проверить, что $myobj наследует класс ClassParent is_subclass_of($myobj, 'ClassParent'); // true is_subclass_of('ClassChild', 'ClassParent'); // true
Авторизуйтесь, чтобы добавлять комментарии