Как лучше реализовать иерархию классов птицы и метод летать? Привет
Столкнулся с проблемой как правильно реализовать семейство классов птицы, проблема с классом курицы, тк они летать не могут, но не реализовыватьже в каждом классе отдельно метод 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
179 +1
1
Ответы
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 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир