Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

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

Этот вопрос проверяет знание различий между абстрактными классами и интерфейсами в 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

    PHP

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

#abstract class

#interface

#inheritance

#implementation

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

  • Аватар

    PHP Guru

    Mikhail Savin

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