Sobes.tech
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();

Абстрактните класове се използват за определяне на общ интерфейс и функционалност за група свързани класове, като детайлите по реализирането се оставят на конкретните подкласове. От гледна точка на потребителя на кода, може да работи с обекти на подкласовете, използвайки типа на базовия абстрактен клас, което осигурява полиморфизъм.