Разделы
Veselov CV | vvShop © 2008 – 2022
Контакты
email:
skype:
Вернуться
» » » 2. Коротко ООП PHP - Принципы: инкапсуляция, полиморфизм, наследование

2. Коротко ООП PHP - Принципы: инкапсуляция, полиморфизм, наследование


Обьект Car в жизни это слишком обобщенно. Поэтому создадим машины унаследовав родитель-класс Car (наследование), имзеним их свойства и методы при необходимости (полиморфизм), и ограничим области видимости свойств и методов с помощью спецификаторов доступа private, protected, public ( инкапсуляция(сокрытие внутренних процессов)).
speed = $speed;
                $this->odo = $speed*$time;
                return 'Движемся со скоростью: ' . $speed . ' км/ч. В течении '  .$time . ' часов 
'; } public function stop() { $this->speed = 0; return 'Остановились, наша скорость: 0 км/ч
' . $this->getOdo(); } // инкапсуляция (ограничили область видимости метода getOdo только классом Car) private function getOdo () { return 'Проехали дистанцию: ' . $this->odo . ' км
'; } } // наследование (наследуем класс родитель Car) class Zaz extends Car { // полиморфизм (переопределили константы DOORS и TYPE для Zaz) const DOORS = 4; const TYPE = 'седан'; // полиморфизм (переопределили свойство $fuel) public $fuel = 40; // расширили новым методом zagloh только для класса Zaz public function zagloh () { return 'Заглох...
'; } } // наследование (наследуем класс родитель Car) class Amfibia extends Car { // полиморфизм (переопределили метод run, все остальное осталось от класса Car) public function run ( $speed = 0, $time = 0, $water = 0 ) { $this->speed = $water == 1? $speed/3 : $speed; $this->odo = $this->speed*$time; return 'Движемся со скоростью: ' . $this->speed . ' км/ч. В течении ' .$time . ' часов
'; } // рашсирили родительский метод stop public function stop() { return 'Пшшшш... ' . parent::stop(); } } // Cоздаем экземпляр объекта класса Zaz $car = new Zaz(); echo 'У машины: ' . $car::DOORS . ' двери
'; echo 'Тип машины: ' . $car::TYPE . '
'; echo 'В баке: ' . $car->fuel . ' л топлива
'; echo 'Текущая скорость машины: ' . $car->speed . ' км/ч
'; echo $car->run(); echo $car->zagloh(); echo $car->run(60, 10); echo $car->stop(); // Cоздаем экземпляр объекта класса Amfibia $car2 = new Amfibia(); echo 'По воде: ' . $car2->run(60, 10, 1); echo $car2->stop();
Оставить комментарий
Вверх