Le classi astratte - OOP in PHP

Le classi astratte - OOP in PHP

Cosa sono le classi astratte?

In PHP, le classi astratte sono classi che non possono essere istanziate direttamente, ma servono come base per definire altre classi più specifiche che ne ereditano le proprietà e i metodi.

Una classe astratta solitamente definisce alcuni metodi classici, quindi implementati, e altri metodi astratti.

Una classe figlia, quindi da una parte eredita delle funzionalità già implementate, dall'altra parte però è forzata a dover implementare i metodi astratti definiti nella classe parent.

Sintassi di una classe astratta

abstract class NomeClasseAstratta {
   abstract public function nomeMetodoAstratto();
}

Cosa sono i metodi astratti all'interno di una classe astratta?

In PHP, i metodi astratti sono metodi definiti all'interno di classi astratte, ma che non hanno un'implementazione definita. La loro implementazione viene invece definita dalle sottoclassi che ereditano dalla classe astratta.

Sintassi di un metodo astratto

abstract class NomeClasseAstratta {
   abstract public function nomeMetodoAstratto();
}

Esempio utilizzando classi e metodi astratti

<?php
// creiamo una classe astratta: Questa non può essere invocata, ma è utile solo per creare delle sottoclassi
abstract class Forma {
    // creiamo un metodo astratto che è utile solo per le sottoclassi che lo ereditano dalla classe e sono quindi 
    // obbligate ad inserirlo
    abstract public function area();
 }
 
 // creiamo delle sottoclassi che ereditano sia la classe che il metodo astratto.
 class Quadrato extends Forma {
    private $lato;
    public function __construct(int|float $lato) {
       $this->lato = $lato;
    }
    public function area(){
       return pow($this->lato, 2);
    }
 }
 
 class Cerchio extends Forma {
    private $raggio;
    public function __construct(int|float $raggio) {
       $this->raggio = $raggio;
    }
    public function area():int {
       $result = M_PI * pow($this->raggio, 2);
       return round($result);
    }
 }
 
 // istanziamo le classi e stampiamo le aree.
 $quadrato1 = new Quadrato("20"); 
 echo $quadrato1->area() . "\n"; // output : 400

 $cerchio1 = new Cerchio("10");
 var_dump($cerchio1->area()) ."\n"; // output: int(314)
 
?>

Scritto da Donato Pirolo

Ciao, sono Donato, frontend developer con una smisurata passione per la SEO. Creo strumenti ad hoc per aiutare aziende e professionisti ad essere cercati sul web e trovare clienti.

Potrebbero interessarti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyright © 2023
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram