extends

Oft braucht man Klassen mit in einer anderen Klasse ähnlichen Variablen und Funktionen . So ist es eine gute Vorgehensweise , eine in allen Ihren Projekten verwendbare Oberklasse zu definieren , und diese dann den Bedürfnissen Ihrer einzelnen Projekte anzupassen . Um dies zu erleichtern , können Klassen andere Klassen erweitern . Die erweiterte bzw . abgeleitete Klasse verfügt über alle Variablen und Funktionen der Basisklasse ( dies wird 'Vererbung ' genannt , obwohl niemand gestorben ist ) , und was Sie in der erweiterten Definition hinzufügen . Es ist nicht möglich , etwas von einer Klasse wegzunehmen , d.h . Sie können keine existierenden Variablen oder Funktionen ' wegdefinieren ' . Eine Unterklasse ist immer von einer einzigen Oberklasse abhängig , d.h . Mehrfachvererbung wird nicht unterstützt . Klassen werden mittels dem Schlüsselwort ' extends ' erweitert .




Hier wird die Klasse Named_Cart definiert , die über alle Variablen und Funktionen von Cart , plus der Variable $owner und der Funktion set_owner( ) verfügt . Sie können einen bestimmten Einkaufswagen ( Named_Cart ) auf dem üblichen Weg erstellen , und nun auch den Besitzer (owner ) bestimmen und erfragen . Sie können noch immer die normalen Cart Funktionen an Named_Cart anwenden :

 
$ncart

 
=

 
new

 
Named_Cart

 
;

 
/

 
/

 
Erstellt

 
einen

 
bestimmten

 
Einkaufwagen

 
$ncart

 
-

 
set_owner("kris")

 
;

 
/

 
/

 
den

 
Besitzer

 
festlegen

 
print

 
$ncart

 
-

 
owner

 
;

 
/

 
/

 
den

 
Besitzer

 
ausgeben

 
$ncart

 
-

 
add_item("10"

 
,

 
1)

 
;

 
/

 
/

 
(vererbte

 
Funktionalität

 
von

 
Cart

 
)



Dies wird auch eine " Eltern-Kind " Beziehung genannt . Sie erstellen eine Klasse ( "Eltern") , und erstellen mittels extends eine neue Klasse , die auf der "Eltern"-Klasse basiert : die "Kind "-Klasse . Sie können auch diese neue Unterklasse verwenden und eine neue , auf dieser Klasse basierenden Klasse erstellen .

Anmerkung : Bevor Sie Klassen verwenden können , müssen Sie diese definieren . Wenn Sie wollen , dass Named_Cart die Klasse Cart erweitert , müssen Sie Cart erst definieren . Wenn Sie eine andere Klasse , z.B . Yellow_named_cart erstellen wollen , welche auf Named_Cart basiert , müssen Sie zuerst Named_Cart definieren . Kurz gesagt ist die Reihenfolge , in der die Klassen definiert werden , sehr wichtig .