Sobes.tech
Junior

Ce este o clasă abstractă?

sobes.tech AI

Răspuns de la AI

O clasă abstractă este o clasă care nu poate fi instanțiată direct, adică nu se poate crea un obiect folosind new. Este destinată să fie utilizată ca clasă de bază pentru alte clase (subclase).

Caracteristicile principale ale unei clase abstracte:

  • Se declară cu cuvântul cheie abstract.
  • Poate conține atât metode abstracte, cât și metode normale (concrete).
  • Metodele abstracte sunt declarate cu cuvântul cheie abstract și nu au corp (implementare). Trebuie implementate în clasele non-abstracte care le moștenesc.
  • Poate conține valori constante și proprietăți.
<?php

abstract class AbstractClass
{
    // Metodă abstractă - trebuie implementată în clasa fiică
    abstract protected function abstractMethod();

    // Metodă normală
    public function concreteMethod()
    {
        echo "Aceasta este o metodă concretă\n";
    }
}

class ConcreteClass extends AbstractClass
{
    // Implementarea metodei abstracte
    protected function abstractMethod()
    {
        echo "Aceasta este implementarea metodei abstracte\n";
    }
}

// Nu se poate crea o instanță a unei clase abstracte
// $obj = new AbstractClass(); // Eroare

// Se poate crea o instanță a clasei concrete
$obj = new ConcreteClass();
$obj->abstractMethod();
$obj->concreteMethod();

Clasele abstracte sunt utilizate pentru a defini o interfață comună și funcționalitate pentru un grup de clase înrudite, lăsând detaliile de implementare pentru clasele fiice specifice. Din perspectiva utilizatorului de cod, se poate lucra cu obiecte ale claselor fiice, folosind tipul clasei de bază abstracte, ceea ce asigură polimorfismul.