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