extends
Mit dem Schlüsselwort extends erbt eine Klasse alle Eigenschaften und Methoden der referenzierten Klasse. Dabei wird die vererbende Klasse als Elternklasse und die erbende Klasse als Kindklasse bezeichnet, entsprechend der Vererbung bei Menschen.
1 class foo { 2 function bar () { 3 // Mache etwas nuetzliches 4 } 5 } 6 7 class foobar extends foo { 8 // Mache etwas anderes 9 }
Klasse foobar hat von der Klasse foo die Methode bar geerbt, also ist diese Funktion auch in der Klasse foobar vorhanden. Jede Methode und jede Eigenschaft die in der Elternklasse (parent) vorhanden ist, ist automatisch in der Kindklasse vorhanden, dieses Konzept wird Vererbung genannt. Voraussetzung hierfür ist, dass die Kindklasse keine Methode oder Eigenschaft des gleichen Namens aufweist, da die geerbte Methode oder Eigenschaft überschrieben wird. Des Weiteren kann durch Verwendung von speziellen Schlüsselwörtern (private, protected und public) das Vererbungskonzept kontrolliert werden.
Abstrakte Methoden der Elternklasse werden ebenso nicht übernommen, da sie selbst keine konkrete implementierung darstellen. Kindklassen müssen entweder diese Methoden selbst abstrakt definieren oder eine konkrete Implementierung dieser Methode beinhalten.
1 abstract class foo { 2 abstract public function bar(); 3 } 4 5 // Eine Moeglichkeit 6 abstract class bar { 7 abstract public function bar(); 8 } 9 10 // Andere Moeglichkeit 11 class bla { 12 public function bar() { 13 // Mache etwas 14 } 15 } 16 17 // Funktioniert nicht 18 class blub { 19 // Alles ausser der Methode bar 20 } 21 22 // Funktioniert nicht, da eine Klasse, die abstrakte Methoden besitzt, selbst abstrakt ist 23 class boing { 24 abstract public class bar(); 25 }