OOP PHP5 - Grundlagen - Vererbung - Zugriffsrechte
1. Die Sache mit dem protected
Die Zugriffsmöglichkeiten auf Eigenschaften und Objekte mit den Sichtbarkeitsstufen private
und public
habe ich euch ja schon gezeigt. Und so schwer ist das ja nicht zu verstehen. Darum konzentrieren wir uns hier ausschließlich
auf protected
.
2. Die Ausgangslage
Dieses Konzept hatte ich ja eben schon erläutert, als ich das Prinzip von Großeltern- und Enkelklassen erläuterte. Hier leitet sich
also die Klasse Mann
von Mensch
ab, und das wiederum von Saeugetier
.
class Saeugetier
{
protected $geschlecht;
protected function setzGeschlecht($value)
{
$this -> geschlecht = $value;
}
}
class Mensch extends Saeugetier
{
...
}
class Mann extends Mensch
{
...
}
3. Der Zugriff
Jetzt wollen wir aus der Klasse Mann
heraus die Eigenschaft geschlecht
in der Klasse Saeugetier
ändern. Eine mögliche Objektreferenz darf das ja wegen der eingeschränkten Sichtbarkeit nicht. Dazu gibt es hier zwei Möglichkeiten.
Variante 1
class Mann extends Mensch
{
public function setzMann()
{
$this -> geschlecht = 'Mann';
}
}
Hier wird die Eigenschaft geschlecht
direkt in der Enkelklasse Mann
geändert.
Variante 2
class Mann extends Mensch
{
public function setzMann()
{
$this -> setzGeschlecht('Mann');
}
}
In diesem Fall gehen wir über setzMann
einen Umweg und rufen die Methode setzGeschlecht
auf, die dann die
Änderung vornimmt.
Das Objekt
$dieter = new Mann;
$dieter -> setzMann();
print_r($dieter);
4. Folgerung
Enkelklassen haben auch(!) Zugriffsrechte auf Eigenschaften und Methoden von Großelternklassen. Das lässt protected
zu.
Anders herum geht es auch. Aber dazu komme ich gleich. Allerdings ist das obige Beispiel sehr unsauber umgesetzt, da man zwei
Möglichkeiten hat, um eine Eigenschaft zu ändern. Eine Lösung für dieses Problem kommt jetzt.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt