Наслідування корисно використовувати, коли ви розширюєте клас, дочірній клас успадковує всі публічні (public) і захищені (protected) методи з батьківського класу. Ці методи матимуть вихідну функціональність до тих пір, поки не будуть перевизначені.
Такий підхід корисний для абстрагування функціональності. Дозволяє реалізувати додаткову функціональність в схожих об’єктах без необхідності реалізовувати всю загальну функціональність.
Щоб створити наслідування від іншого класу потрібно використовувати оператор extends
Приклад наслідування:
<?php
class FirstClass {
public $var1 = "value1";
protected function func1() {
}
public function func2() {
}
}
class SecondClass extends FirstClass {
public $var2 = "value2";
}
$fc = new FirstClass();
$sc = new SecondClass();
echo $fc->var1; // value1
echo $sc->var1; // value1
$sc->func2(); // работает
echo $sc->var2; // value2
?>
Якщо ми спробуємо викликати метод $sc ->func1()
, то отримаємо помилку, через те, що метод func1
визначений в батьківському класі як protected
, він не може бути викликаний зовні.
<?php $sc->func1(); // не працює, метод захищений (protected) ?>