Inventiamo una classe...
Non ho ancora indagato se esistano in php le classi astratte.
Comunque, facciamo che la classe triangolo sia derivata della classe rettangolo, anche se ci starebbe meglio una classe astratta...
<?php class rettangolo{ private $area; private $base; private $altezza; function __construct($b, $a){ $this->base=$b; $this->altezza=$a; } public function get_area(){ return $this->base * $this->altezza; } } class triangolo extends rettangolo{ function __construct($b,$a){ $this->base=$b; $this->altezza=$a; } public function get_area(){ return ($this->base * $this->altezza)/2; } } $myrect=new rettangolo(4,5); echo "Area del rettangolo ".$myrect->get_area(); echo "<br>"; $mytrg=new triangolo(4,5); echo "Area del triangolo ".$mytrg->get_area(); ?>I risultati sono come mi attendo:
Area del rettangolo 20 Area del triangolo 10Dunque ho overridato il metodo get_area().
Ora voglio usare l'operatore di scope (non so se anche in php si chiama così) per accedere al metodo della classe base.
<?php class rettangolo{ protected $base; protected $altezza; function __construct($b,$a){ $this->base=$b; $this->altezza=$a; } public function get_area(){ return $this->base * $this->altezza;; } } class triangolo extends rettangolo{ function __construct($b, $a){ $this->base=$b; $this->altezza=$a; } public function get_area(){ return rettangolo::get_area(); } } $myrect=new rettangolo(4,5); echo "Area del rettangolo ".$myrect->get_area(); echo "<br>"; $mytrg=new triangolo(4,5); echo "Area del triangolo ".$mytrg->get_area() ?>
Area del rettangolo 20 Area del triangolo 20Perfetto!
Nessun commento:
Posta un commento