Thread OOP, erste Schritte
(15 answers)
Opened by hlubenow at 2012-02-21 16:20 Quote Bei mir funktioniert das mit Accessor einwandfrei, ohne printFoo() überschreiben zu müssen. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 package A; sub new { my ($class, %args) = @_; bless \%args, $class; } # access foo sub _foo { return shift->{foo}; } sub printFoo { my $self = shift; return $self->_foo; } package B; @B::ISA = qw/ A /; # access foo OVERLOAD sub _foo { return shift->{foo} + 1; } package main; my $ob = B->new( foo => 23 ); print $ob->printFoo; # A: 23, B: 24 PS: Ja, in der eigenen Klasse darf ich auf interne Attribute zugreifen. Ich habe Klassen in denen sehr, sehr viele Methoden notiert sind, unvorstellbar, für jeden Attributzugriff einen extra Accessor haben zu müssen. Die Empfehlung aus Eric Foster Johnson "Perl Module" bereits im Konstruktor alle Attribute (auch mit undef) namentlich zu notieren, hat sich auch in meiner Praxis immer wieder bewährt und das habe ich in einer anderen Umgebung oft sehr schmerzlich vermisst. |