Dedovanje omogoča izpeljevanje razredov iz obstoječih rezredov. Nov razred deduje vse obstoječe metode in lastnosti. V PHP za dedovanje uporabimo rezervirano besedo extends
.
<?php
class Avto {
protected $model; // zaščiteno!
function setModel($model) { $this->model = $model; }
function getModel() { return $this->model; }
};
class Tip extends Avto {
public $proizvajalec; // ker je lastnost public, lahko do nje dostopamo kjerkoli!
function izpis() { echo $this->proizvajalec . " " . $this->model . "<br />"; }
};
$a4quattro = new Tip();
$a4quattro->setModel("A4 Quattro");
$a4quattro->proizvajalec = "Audi";
$golf = new Tip();
$golf->setModel("Golf");
$golf->proizvajalec = "VW";
$a4quattro->izpis();
$golf->izpis();
?>
Audi A4 Quattro
VW Golf
VW Golf
V novih razredih se kontruktor in destruktor dedovanih razredov NE kliče samodejno, treba jih je poklicati ročno z parent::__construct()
oz. parent::__destruct()
.
<?php
class Avto {
private $model; // privatno!
function __construct($model) { $this->model = $model; } //konstruktor
function setModel($model) { $this->model = $model; }
function getModel() { return $this->model; }
};
class Tip extends Avto {
public $proizvajelc; // ker je lastnost public, lahko do nje dostopamo kjerkoli!
function __construct($model,$proizvajalec) {
parent::__construct($model);
$this->proizvajalec = $proizvajalec;
}
function izpis() { echo $this->proizvajalec . " " . $this->getModel() . "<br />"; }
};
$a4quattro = new Tip('A4 Quattro', 'Audi');
$golf = new Tip('Golf', 'VW');
$a4quattro->izpis();
$golf->izpis();
?>
A4 Quattro
Golf
Golf