PHP. ООП. Наследование классов
Инкапсуляция — это способность объекта/класса скрывать свою внутреннюю реализацию, предоставляя пользователю (разработчику) готовый интерфейс. Например, когда вы пользуетесь компьютером, вы не задаетесь вопросом, как сохраняются ваши данные, куда идут сигналы от устройства ввода в компьютер и так далее. У вас есть готовые средства, которые вам предоставляет компьютер. В ООП это по факту методы класса.
Наследование, уверен, уже понятно из названия. Класс может унаследовать свойства и методы другого класса (смотрите код). Например, мы многое унаследовали от наших мам и пап.
Полиморфизм связан с наследованием — это возможность объекта переопределять методы потомка. Например, в коде мы переопределили метод setName().
Отмечу еще несколько важных вещей:
старайтесь следовать правилу — «один класс — один файл», не определяйте несколько классов одном файле.
В дочернем классе есть возможность вызывать конструктор родителя, используя ключевое слово parent::.
Рекомендую вам почитать раздел ООП на сайте php. Выскажу личное мнение — мне документация в данном разделе показалась непростой. Можно найти немало ресурсов на более простом языке.
Код урока
<?php
/*
** Наследование классов (наследовать можно только один класс)
** Есть негласное требование - "один класс - один файл"
** Переопределение свойств и методов
** Переопределение и порядок вызова конструктора
** Деструкторы - вызываются после окончания работы скрипта, или если на объект больше
**/
class Man {
public $name;
public $age = 27;
public function __construct() {
echo "Вызов конструктора";
}
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
return $this->name;
}
public function __destruct() {
echo "Вызов деструктора";
}
}
class Kamil extends Man {
public $age = 25;
public function __construct() {
echo "Вызов конструктора в дочернем классе" . "<br>";
parent::__construct();
}
public function setName($name) {
if($name = "Камиль") {
$this->name = "Еще один Камиль";
}
return $this->name;
}
}
$kamil = new Kamil();
echo "<br>";
print_r($kamil);
echo "<br>";
$kamil->setName("Камиль");
print_r($kamil);
echo "<br>";
0 Comments