Sobes.tech
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 abstract e 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.