Field note
Что такое абстрактный класс ?
Что такое абстрактный класс ? Спросят с вероятностью 47%
Абстрактный класс — это класс в ООП, который не может быть инстанциирован напрямую, то есть нельзя создать объект абстрактного класса используя оператор new. Они предназначены для того, чтобы служить базой для других классов, которые должны реализовать определенные методы, заданные в нем.
Основная цель — обеспечение общего определения класса, которое может быть использовано в качестве основы для создания производных классов. Производные классы должны реализовать все абстрактные методы абстрактного родительского класса, но при этом они могут также иметь дополнительные методы и свойства или переопределять существующие.
Часто содержат абстрактные методы — методы, объявленные в абстрактном классе, но не имеющие реализации в нём. Реализация этих методов должна быть обеспечена в производных классах. Это позволяет им задавать форму и обязательные методы для всех своих наследников, не определяя при этом конкретную реализацию этих методов.
Могут также содержать полностью реализованные методы, конструкторы, деструкторы и свойства, которые могут быть использованы или переопределены в производных классах.
Пример:
abstract class Животное {
public function ест() {
echo "Это животное ест";
}
abstract public function издаетЗвук();
}
class Собака extends Животное {
public function издаетЗвук() {
echo "Гав";
}
}
// $животное = new Животное(); // Ошибка: нельзя инстанциировать абстрактный класс
$собака = new Собака();
$собака->ест(); // Вывод: Это животное ест
$собака->издаетЗвук(); // Вывод: Гав
В этом примере, Животное — это абстрактный класс с абстрактным методом издаетЗвук и обычным методом ест. Класс Собака наследует класс Животное и обязан реализовать абстрактный метод издаетЗвук. Создать экземпляр класса Животное напрямую нельзя, но можно использовать его для создания более конкретных классов животных, таких как Собака.
Абстрактный класс определяет шаблон для своих наследников и может задавать некоторые общие функции, которые будут использоваться или расширяться этими наследниками.