V. 8.7 (27.03.2012)

Infos

Download

Theorie OOP PHP5

Beispiele

Beispiele

Schnellsuche

OOP PHP5 - Unterschiede - Finale Klassen und Methoden

1. Überschreiben

Mit dieser Technik werde ich euch unter dem entsprechenden Punkt vertraut machen. Hier kommt erst mal nur das Grundsätzliche. Also, in PHP ist es unter bestimmten Umständen möglich, dass zum Beispiel eine Kindklasse die Methode oder Eigenschaft einer Elternklasse zerstört und sie neu aufbaut. Um das zu verhindern, arbeitet man mit dem Schlüsselwort final.

Das ist also mit dem italienischen "basta" oder dem deutschen "isso" gleichzusetzen. Man duldet keinen Widerspruch oder einen Eingriff von Außen. final entspricht in etwa dem Verhalten von so genannten Top-Managern. Die reagieren ähnlich.

2. Eigenschaften

Leider ist es nicht möglich, gezielt einzelne Eigenschaften als final zu deklarieren. Es ist, genau gesagt, überhaupt nicht möglich! Um zu verhindern, dass Eigenschaften nicht überschrieben werden können, gibt es nur eine radikale Methode. Man definiert die Klasse als solches.


final class Mensch
{
  ...
}

Leider hat das zur Folge, dass diese nicht mehr als Elternklasse zur Verfügung steht. Das heißt, sie kann nicht über extends in Kindklassen eingebunden werden.


final class Mensch
{
  ...
}
class 
Mann extends Mensch
{
  ...
}

erzeugt eine Fehlermeldung à la Class Mann may not inherit from final class (Mensch) in.... Also fassen wir zusammen. Es gibt keine finalen Eigenschaften sondern nur finale Klassen. Leider.

3. Methoden

Will man nun eine Methode gezielt vor dem Überschreiben schützen, so deklariert man sie als final. Der folgende Code wirft dann eine Fehlermeldung aus wie Fatal error: Cannot override final method Mensch::setzNamen().


class Mensch
{
  final protected function 
setzNamen ($value)
  {
    
  }
}
class 
Frau extends Mensch
{
  public function 
setzNamen ($value)
  {
    
  }
}
$doerte = new Frau;
$doerte -> setzNamen('Dörte');

weiter zum nächsten Abschnitt