V. 8.7 (27.03.2012)

Infos

Download

Theorie OOP PHP5

Beispiele

Beispiele

Schnellsuche

OOP PHP5 - Grundlagen - Vererbung - Zugriffsrechte

1. Die Sache mit dem protected

Die Zugriffsmöglichkeiten auf Eigenschaften und Objekte mit den Sichtbarkeitsstufen privat 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.

weiter zum nächsten Abschnitt