Auch Vererbung wird beim objektorientierten Ansatz von PHP unterstützt. Erfahren Sie hier, wie Vererbung im PHP Code aussieht.
Grundlegende Kentnisse in der objektorientierten Programmierung sind Voraussetzung um diesen Artikel verstehen zu können, es geht primär um die Syntax bei Vererbung in PHP
Voraussetzung für die hier gezeigten PHP-Scripte: PHP 5
Oberklassen und Unterklassen
Um Vererbung deutlich zu machen eignet sich z.B. die Oberklasse Fahrzeug mit den Unterklassen Boot und Pkw. In folgendem Code werden einige Besonderheiten in der Vererbung von PHP exemplarisch angewandt und weiter unten nocheinmal aufgegriffen und erklärt:
<?php
class Fahrzeug {
protected $farbe;
private $id;
function __construct($color) {
$this->farbe = $color;
}
function fahren() {
return "brumm brumm";
}
function hupen() {
return "tuut tuut";
}
}
class Boot extends Fahrzeug {
function __construct($color) {
parent::__construct($color);
}
function hupen() {
return "TUUT TUUT";
}
function kentern() {
return "platsch!";
}
}
class Pkw extends Fahrzeug {
private $kennzeichen;
function __construct($color, $sign) {
parent::__construct($color);
$this->kennzeichen = $sign;
}
function handbremseZiehen() {
#...
}
}
##Beispiele fuer Instanzen:
$boot = new Boot("rot");
$boot->hupen(); ###Ausgabe: TUUT TUUT
$auto = new Pkw("blau", "TM-4711");
$auto->hupen(); ###Ausgabe: tuut tuut
?>
Erläuterungen:
Wie leicht zu erkennen ist, erben Boot und Pkw von Fahrzeug. Dies wird mittels des Schlüsselworts extends
realisiert.
Mehrfachvererbung gibt es nicht, eine Klasse kann immer nur von einer Klasse erben. Alternativ kann auch mit Interfaces gearbeitet werden.
Die Klasse Boot und Pkw haben Zugriff auf die Variable $farbe
(protected
) und auf die Methoden der Oberklasse (automatisch auf public
), nicht aber auf die private Variable $id
.
(Mehr zu Sichtbarkeiten von Methoden/Variablen siehe: Klassen in PHP Abschnitt private,protected,public).
Die Klasse Boot überschreibt die Methode hupen() aus ihrer Oberklasse. Dadruch ändert sich die Ausgabe wie im Code beispielhaft dargestellt.
Der Konstruktor der Vaterklasse ist über das Schlüsselwort parent
erreichbar und kann bei Bedarf mit parent::__construct(...)
aufgerufen werden.