Overerving stelt een nieuwe klasse in staat om eigenschappen en gedrag van een bestaande klasse over te nemen.
De nieuwe klasse wordt een subklasse of afgeleide klasse genoemd. De bestaande klasse staat bekend als een superklasse of basisklasse.
Aspecten:
<?php
// Basisklasse
class SimpleClass {
// Gegevens
protected $attribuut = "Tekst waarde";
// Constructor
public function __construct($waarde) {
$this->attribuut = $waarde;
}
// Gedrag
public function attribuutWeergeven() {
return $this->attribuut . "\n";
}
}
// SubClass die van SimpleClass erft
class SubClass extends SimpleClass {
// Constructor
public function __construct($waarde) {
parent::__construct($waarde);
}
// Extra gedrag of aanpassingen kunnen hier worden toegevoegd
public function extraGedrag() {
return "Extra gedrag van de subklasse.\n";
}
}
// Maak een exemplaar aan van SubClass (instance)
$subObject = new SubClass();
// Benader het attribuut met een methode van de basisklasse
echo $subObject->attribuutWeergeven();
// Benader extra gedrag van de subklasse
echo $subObject->extraGedrag();
?>
Abstract class: De Entiteit klasse kan niet geinstantieerd worden, deze klasse dient enkel als basis template voor overerving door de SimpleClass subklassen.
<?php
// Abstracte klasse die de basisfunctionaliteit implementeert
abstract class Entiteit {
protected $attribuut;
// Constructor
public function __construct($waarde) {
$this->attribuut = $waarde;
}
// Getter methode voor het attribuut
public function getAttribuut() {
return $this->attribuut;
}
// Abstracte methode voor weergeven
abstract public function weergeven();
}
// Klasse die van Entiteit erft en de weergeven methode implementeert
class SimpleClass extends Entiteit {
// Implementatie van weergeven methode
public function weergeven() {
return $this->getAttribuut() . "\n";
}
}
// Maak een exemplaar aan van SimpleClass (instantie)
$myObject = new SimpleClass("Tekst waarde");
// Benader het attribuut van het exemplaar direct
echo $myObject->getAttribuut() . "\n";
// Benader het attribuut met een methode
echo $myObject->weergeven();
?>