Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про PHP: abstract, class

Как реализовать абстрактный класс на примере Animal?

Вопрос проверяет знание абстрактных классов и понимание, как задавать общий контракт и базовую логику для группы классов.

Короткий ответ

Абстрактный класс — это класс, от которого нельзя создать объект напрямую. Он задаёт общую структуру и обязательные методы для потомков. Дочерние классы обязаны реализовать абстрактные методы. Это помогает стандартизировать поведение и избежать дублирования кода.

Длинный ответ

Абстрактные классы используются, когда у нескольких классов есть общая логика и общий смысл, но конкретная реализация отличается.

1) Что такое абстрактный класс

Определение:
Абстрактный класс — это класс, который может содержать абстрактные методы (без реализации) и обычные методы, и не может быть создан напрямую.

2) Пример: базовый класс Animal

abstract class Animal {
    protected string $name;

    public function __construct(string $name) {
        $this->name = $name;
    }

    abstract public function makeSound(): string;

    public function getName(): string {
        return $this->name;
    }
}

Здесь:

  • makeSound() — обязателен для реализации

  • getName() — общая логика для всех животных

3) Реализация в дочерних классах

class Dog extends Animal {
    public function makeSound(): string {
        return 'Woof';
    }
}

class Cat extends Animal {
    public function makeSound(): string {
        return 'Meow';
    }
}

4) Использование

$animals = [
    new Dog('Buddy'),
    new Cat('Murka'),
];

foreach ($animals as $animal) {
    echo $animal->getName() . ': ' . $animal->makeSound();
}

5) Зачем это нужно на практике

  • Общий контракт поведения

  • Частичная реализация “по умолчанию”

  • Полиморфизм без дублирования кода

Краткий вывод

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

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • PHP

    PHP

Ключевые слова

#abstract

#class

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.