Hauptmenü

Untermenü

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