Artikelformat

Die Modifiers in PHP – Teil 3

Im dritten und letzten Teil der Modifier-Reihe geht es um final und abstract. Diese Modifier beeinflußen nicht die „Sichtbarkeit“ und erlauben weitere Aspekte der objektorientierten Programmierung.

Möchte man eine Methode außerhalb der Klasse verfügbar machen, so nutzt man den public-Modifier. Da man von dieser Klasse eine andere Klasse ableiten kann, ist diese public-Methode automatisch überschreibbar. Wenn man dies verhindern möchte, muss man final benutzen. Damit wird eine Methode als nicht überschreibbar definiert. Diesen Modifier kann man natürlich auch auf die Klasse anwenden, sodass eine Klasse nicht mehr ableitbar ist.

Möchte man das Gegenteil bewirken, gibt es den abstract-Modifier. Dieser besagt, das eine Methode unbedingt überschrieben werden muss. Auch dieser Modifier kann auf die gesamte Klasse angewendet werden. Grundsätzlich ist eine abstrakte Klasse mit abstrakten Methoden ähnlichem einem Interface. Jedoch kann eine Klasse nur von genauer einer Klasse abgeleitet sein, was bei einem Interface nicht gilt. Eine weitere Besonderheit ist die Möglichkeit in einer abstrakten Klasse die Modifier zu mischen. Es gibt also bspw. 2 abstrakte Methoden und 1 protected. Somit darf diese Methode ganz normalen Code enthalten und kann in der konkreten Klasse genutzt werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
abstract class Car {
 
     protected function turnLeft() {
          // nach links
     }
 
    /**
     * tanken
     */
    abstract public function refuel() ;
 
}
 
class DieselCar extends Car {
     public function refuel() {
          // tanke Diesel
     }
}

Die abstrakte Klasse Car bietet eine Methode um nach links zu fahren. Diese ist ausimplementiert (im Beispiel nur ein Kommentar). Daneben gibt es noch eine abstrakte Methode, um das Auto zu betanken. Das davon abgeleitete Auto muss nun die refuel-Methode implementieren.

2 Kommentare

    • Auweia, der Code ist wirklich missverständlich. Wird korrigiert 😉

      Update: (15:07) ist korrigiert …

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.