Junior
Cos'è una classe astratta?
sobes.tech AI
Risposta dell'AI
Una classe astratta è una classe che non può essere istanziata direttamente, cioè non è possibile creare un suo oggetto con new. È destinata ad essere utilizzata come classe base per altre classi (sottoclassi).
Le caratteristiche principali di una classe astratta:
- Viene dichiarata con la parola chiave
abstract. - Può contenere sia metodi astratti che metodi normali (concreti).
- I metodi astratti sono dichiarati con la parola chiave
abstracte non hanno corpo (implementazione). Devono essere implementati nelle classi non astratte che le estendono. - Può contenere valori costanti e proprietà.
<?php
abstract class AbstractClass
{
// Metodo astratto - deve essere implementato nella sottoclasse
abstract protected function abstractMethod();
// Metodo normale
public function concreteMethod()
{
echo "Questo è un metodo concreto\n";
}
}
class ConcreteClass extends AbstractClass
{
// Implementazione del metodo astratto
protected function abstractMethod()
{
echo "Questa è l'implementazione del metodo astratto\n";
}
}
// Non si può creare un'istanza di una classe astratta
// $obj = new AbstractClass(); // Errore
// È possibile creare un'istanza della classe concreta
$obj = new ConcreteClass();
$obj->abstractMethod();
$obj->concreteMethod();
Le classi astratte sono utilizzate per definire un'interfaccia e funzionalità comuni per un gruppo di classi correlate, lasciando i dettagli di implementazione alle classi figlie specifiche. Dal punto di vista dell'utente del codice, si può lavorare con oggetti delle classi figlie usando il tipo della classe base astratta, garantendo il polimorfismo.