Как лучше реализовать иерархию классов птицы и метод летать? Привет Столкнулся с проблемой как правильно реализовать семейство классов птицы, проблема с классом курицы, тк они летать не могут, но не реализовыватьже в каждом классе отдельно метод 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(); }
Для реализации иерархии классов птицы и метода летать, можно использовать абстрактный класс 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, но для тех, кто не умеет летать, можно просто оставить его с сообщением об ошибке.
Для реализации иерархии классов птицы и метода летать, можно использовать абстрактный класс 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, но для тех, кто не умеет летать, можно просто оставить его с сообщением об ошибке.