Как лучше реализовать иерархию классов птицы и метод летать? Привет
Столкнулся с проблемой как правильно реализовать семейство классов птицы, проблема с классом курицы, тк они летать не могут, но не реализовыватьже в каждом классе отдельно метод fly ? И abstract class Bird
{
abstract public function fly();
}
class Eagle extends Bird
{
public function fly()
{
echo "I can fly";
}
}
class Chicken extends Bird
{
public function fly()
{
// What to do here ?
die('I cant fly Error');
}
}
$birds = [new Eagle(), new Chicken(), new Eagle()];
foreach ($birds as $bird) {
echo $bird->fly();
}

21 Авг 2019 в 07:00
151 +1
0
Ответы
1

Для реализации иерархии классов птицы и метода летать, можно использовать абстрактный класс Bird с методом fly, который будет абстрактным и должен быть реализован в каждом конкретном классе птицы.

В случае с классом Chicken, который не может летать, можно либо оставить метод fly абстрактным и не реализовывать его в классе Chicken, либо реализовать его с сообщением об ошибке.

Пример реализации:

abstract class Bird
{
abstract public function fly();
}
class Eagle extends Bird
{
public function fly()
{
echo "I can fly";
}
}
class Chicken extends Bird
{
public function fly()
{
die('I cant fly Error');
}
}
$birds = [new Eagle(), new Chicken(), new Eagle()];
foreach ($birds as $bird) {
echo $bird->fly() . PHP_EOL;
}

Таким образом, при использовании этой структуры классов, каждая птица должна реализовывать метод fly, но для тех, кто не умеет летать, можно просто оставить его с сообщением об ошибке.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 706 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир