in reply to overridden and inheritance
Not sure if this is a useful answer, however you seem to be struggling with overriding methods so consider:
# file noname1.pm: use strict; use warnings; package Hello; sub new { my $type = shift; # Call as: Hello->new (); my $class = ref $type || $type; return bless {}, $class; } sub hi { my ($self, $tail) = @_; $tail ||= ''; return 'Hello' . $tail; } 1; package World; use noname1; use base qw(Hello); sub new { my $type = shift; # Call as: World->new (); my $class = ref $type || $type; return Hello::new ($class); } sub hi { my ($self, $tail) = @_; $tail ||= ''; # Now call up to get base class work done return $self->Hello::hi (' World' . $tail); } 1; #file noname.pl: use strict; use warnings; use noname1; my $hi = World->new (); # Create derived class object print $hi->hi ('. How goes it?'); # Call method on derived class objec +t
Prints:
Hello World. How goes it?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: overridden and inheritance
by chromatic (Archbishop) on Aug 22, 2007 at 05:15 UTC | |
|
Re^2: overridden and inheritance
by wst (Acolyte) on Aug 22, 2007 at 13:34 UTC |