Суть абстрактного класса заключается в том, чтобы служить шаблоном для других классов. Он не может быть создан непосредственно, но может содержать абстрактные методы (без тела), которые должны быть реализованы в дочерних классах, а также конкретные методы и свойства.
Ключевые моменты:
new АбстрактныйКласс() вызовет ошибку.extends).abstract и не имеют тела.Пример:
php
Таблица сравнения с интерфейсами и обычными классами:
| Характеристика | Абстрактный класс | Интерфейс | Обычный класс |
|---|---|---|---|
| Создание экземпляра | Нет | Нет | Да |
| Наследование | Да (extends) + Реализация (implements) | Только Реализация (implements) | Да (extends) |
| Методы | Конкретные и абстрактные | Только абстрактные (без тела) | Только конкретные |
| Свойства | Да | Нет | Да |
| Множественное наследование | Нет | Да | Нет |
| Назначение | Частичная реализация, общая структура | Определение контракта (поведения) | Полная реализация, конкретный объект |
Используется, когда есть общая логика и свойства, которые должны быть у группы связанных классов, но их конкретное поведение (реализация некоторых методов) различается. Обеспечивает многократное использование кода и единообразие в структуре классов.