Junior
Какво е абстрактен клас?
sobes.tech AI
Отговор от AI
Абстрактният клас е клас, който не може да бъде инстанциран директно, то есть не може да се създаде негов обект с new. Той е предназначен за използване като базов клас за други класове (подкласи).
Основните характеристики на абстрактния клас:
- Обявява се с ключовата дума
abstract. - Може да съдържа както абстрактни, така и обикновени (конкретни) методи.
- Абстрактните методи се обявяват с ключовата дума
abstractи нямат тяло (реализация). Те трябва да бъдат реализирани в неабстрактните класове-потомци. - Може да съдържа константни стойности и свойства.
<?php
abstract class AbstractClass
{
// Абстрактен метод - трябва да бъде реализиран в класа-потомък
abstract protected function abstractMethod();
// Обикновен метод
public function concreteMethod()
{
echo "Това е конкретен метод\n";
}
}
class ConcreteClass extends AbstractClass
{
// Реализация на абстрактния метод
protected function abstractMethod()
{
echo "Това е реализацията на абстрактния метод\n";
}
}
// Не може да се създаде екземпляр на абстрактен клас
// $obj = new AbstractClass(); // Грешка
// Може да се създаде екземпляр на конкретен клас
$obj = new ConcreteClass();
$obj->abstractMethod();
$obj->concreteMethod();
Абстрактните класове се използват за определяне на общ интерфейс и функционалност за група свързани класове, като детайлите по реализирането се оставят на конкретните подкласове. От гледна точка на потребителя на кода, може да работи с обекти на подкласовете, използвайки типа на базовия абстрактен клас, което осигурява полиморфизъм.