Traits

Immer dann wenn Klassen mehrere Klassen beerben sollen, entstehen innerhalb einer objektorientierten Programmiersprache Schwierigkeiten. Deshalb ist es in den meisten objektorientierten Programmiersprachen nicht erlaubt, mehrere Klassen gleichzeitig zu beerben. Aus diesem Grunde ist der Trait eingeführt worden, was im Deutschen mit ,,Eigenschaft“ oder ,,Charakterzug“ zu übersetzen ist. Ein Trait hat starke Ähnlichkeiten zu einer abstrakten Klasse. Seine Funktionen und Variablen werden in die nutzende Klasse mit hineingemischt.

Ein Trait lässt sich ähnlich einer Klasse definieren, indem statt class das Schlüsselwort trait benutzt wird. Mit Hilfe von use wird eine Klasse angewiesen, den Trait zu nutzen. Sowohl Funktionen wie auch Variablen sind dann in ihr verfügbar:

Sollte es so sein, dass eine Funktion gleichen Namens in der nutzenden Klasse wie im Trait definiert ist, so verdeckt diese Funktion in der Klasse die Funktion im Trait. Dies ist jedoch nicht der Fall, wenn gleichzeitig zur Traitnutzung die Klasse eine Klasse beerbt und dort eine gleichnamige Funktion definiert ist. Diese wird durch den Trait überdeckt. Der Trait schiebt sich also in der Vererbungshierarchie zwischen Klasse und beerbten Klassen.

Die Sichtbarkeit von Funktionen kann mit dem Schlüsselwort as umdefiniert werden. Dies gilt jedoch nicht für Variablen:

Es können auch mehrere Traits von einer Klasse genutzt werden, indem diese in der use-Deklaration durch Kommata (,) getrennt angegeben werden. Wenn zwei Traits ein und dieselbe Funktion definieren, so erzeugt dies einen Fehler. Der Fehler muss aufgelöst werden, indem bestimmt wird, welche der Funktionen genutzt werden soll:

Auch können auf diese Weise Aliase für Funktionen definiert werden:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert