Philipp Hasenfratz: vererbung

Beitrag lesen

Halihallo

Naja, im Grunde schon. Allerdings nur ueber 'Mixin', richtige Vererbung kann Perl
nicht. Im Grunde verfaehrt Perl so: es sucht die Methode im aktuellen Modul
(Package). Wenn sie da nicht vorhanden ist, sucht Perl alle in @ISA verzeichneten
Module ab. Daraus ergibt sich auch die Syntax:

@ISA = qw(Baseclass1 Baseclass2);

Vielleicht noch eine kleine Bemerkung für die, die diese schmerzliche Erfahrung noch nicht gemacht haben:
@ISA wird depth-first abgearbeitet, also:

wenn nach einer nicht vorhandenen Methode gesucht wird, wird in diesem Beispiel die Methode zuerst in Baseclass1 gesucht. Ist sie dort auch nicht vorhanden, wird zuerst (also bevor die Suche in Baseclass2 weitergeführt wird) nach der Methode in Baseclasses der Baseclass1 gesucht, erst am Schluss, wenn die ganze hierarchie von Baseclasses von Baseclass1 abgearbeitet wurde, bedient sich perl der baseclass2 und dessen Basisklassen...

Leider musste ich dies mal schmerzlich feststellen... Zudem finde ich es eigentlich falsch bzw. schlecht implementiert...

Viele Grüsse

Philipp