Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

В чем разница между абстрактным классом и интерфейсом?

Этот вопрос проверяет знание различий между абстрактными классами и интерфейсами в PHP и их применения в объектно-ориентированном программировании.

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

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

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

В PHP абстрактный класс и интерфейс играют разные роли в объектно-ориентированном дизайне.

 

Абстрактный класс:

- Может содержать как абстрактные (без реализации), так и обычные (с реализацией) методы.

- Может содержать свойства, которые классы-потомки могут наследовать.

- Подклассы должны реализовать абстрактные методы.

 

Интерфейс:

- Содержит только объявления методов без реализации.

- Класс должен реализовать все методы интерфейса.

- Класс может реализовать несколько интерфейсов, но наследовать только один абстрактный класс.

 

Пример:

// Абстрактный класс
abstract class Animal {
    abstract public function makeSound();
}

// Интерфейс
interface Swimmable {
    public function swim();
}

// Класс, наследующий абстрактный класс и реализующий интерфейс
class Dog extends Animal implements Swimmable {
    public function makeSound() {
        echo "Bark!";
    }

    public function swim() {
        echo "Dog is swimming.";
    }
}

$dog = new Dog();
$dog->makeSound();  // Bark!
$dog->swim();       // Dog is swimming.

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

  • Аватар

    PHP Guru

    Mikhail Savin

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • PHP

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

#abstract class

#interface

#inheritance

#implementation

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

  • Аватар

    PHP Guru

    Mikhail Savin

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