Какую роль в этом коде (из книги) играют абстрактные классы?
<meta charset="UTF-8">
<?php
trait GetSumLine {
function CalculTax($price){
return ( ( $this->expirience() ) * $price );
}
abstract function expirience();
}
abstract class Service{
//Сервис
}
class Object{
use GetSumLine {
GetSumLine::CalculTax as private;
}
function __construct($price){
$this->price = $price;
}
public function expirience(){
return 20;
}
public function GetEndSum(){
return ($this->CalculTax($this->price));
}
}
$doc = new Object(320);
print "{$doc->GetEndSum()}";
В качестве примера:
Классы Bear
и Monkey
наследуются от абстрактного класса Animal
, в игре про зоопарк, для того чтобы узнать можно или нельзя кормить животное экземплярами классов Banana
и Honey
, которые наследуют класс Food
, у Animal
вы добавляете метод без реализации canEat(Food)
а в классах-наследниках уже реализуете его в соответствии с их логикой.
Польза здесь вот в чем: теперь во всех местах где вы захотите узнать можно ли накормить животное едой вы будете оперировать классами еда и животное, при этом, когда вы захотите добавить в игру свинью и трюфели вам не придется менять уже написанный код, который оперирует животными и едой.
Это касается как интерфейсов так и абстрактных классов, можно считать что интерфейс это вырожденый случай абстрактного класса.
Основная цель абстрактных классов - практическая реализация полиморфизма, то есть базовое описания методов, которые должны быть переопределены в классах потомках.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пример брал отсюдаПомогите реализовать сохранение файла конкретно на сервере в автоматическом режиме, а не сохранение файла на компьютер...
<img name="signature" src="data:image/png;base64,iVBORw0KGgoAAAANSUhE
Разрабатываю приложение на C#, одной из функций которого является отправка некоторых данных на сервер POST запросомВсё отправляется и обрабатывается,...