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
abstracti 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.