Sobes.tech
Junior

Šta je apstraktna klasa?

sobes.tech АИ

Одговор од АИ

Apstraktna klasa je klasa koja ne može biti direktno instancirana, tj. ne može se kreirati njen objekat pomoću new. Namenjena je za korišćenje kao osnovna klasa za druge klase (potomke).

Glavne karakteristike apstraktne klase:

  • Deklariše se ključnom reči abstract.
  • Može sadržavati i apstraktne i obične (konkretne) metode.
  • Apstraktne metode se deklaršu sa abstract i nemaju telo (implementaciju). One moraju biti implementirane u neapstraktnim klasama potomcima.
  • Može sadržavati konstante i svojstva.
<?php

abstract class AbstractClass
{
    // Apstraktna metoda - mora biti implementirana u klasi potomku
    abstract protected function abstractMethod();

    // Obična metoda
    public function concreteMethod()
    {
        echo "Ovo je konkretna metoda\n";
    }
}

class ConcreteClass extends AbstractClass
{
    // Implementacija apstraktne metode
    protected function abstractMethod()
    {
        echo "Ovo je implementacija apstraktne metode\n";
    }
}

// Ne može se napraviti instanca apstraktne klase
// $obj = new AbstractClass(); // Greška

// Može se napraviti instanca konkretne klase
$obj = new ConcreteClass();
$obj->abstractMethod();
$obj->concreteMethod();

Apstraktne klase se koriste za definisanje zajedničkog interfejsa i funkcionalnosti za grupu povezanih klasa, ostavljajući detalje implementacije konkretnim klasama-potomcima. Sa stanovišta korisnika koda, može se raditi sa objektima klasa potomaka koristeći tip osnovne apstraktne klase, što obezbeđuje polimorfizam.