sub
new {
my
(
$class
,
@args
) =
@_
;
bless
{
data
=> \
@args
},
$class
;
}
sub
basemethod {
print
"Base::basemethod() --> @{$_[0]{data}}\n"
;
}
@ISA
=
'Base'
;
sub
new {
my
(
$class
,
$new_attr1
,
$new_attr2
,
@base_args
) =
@_
;
my
$self
=
$class
->SUPER::new(
@base_args
);
$self
->{attr1} =
$new_attr1
;
$self
->{attr1} =
$new_attr2
;
return
$self
;
}
sub
method {
print
"Derived::method()\n"
;
}
sub
new {
my
(
$class
,
$new_attr1
,
$new_attr2
,
@base_args
) =
@_
;
bless
{
attr1
=>
$new_attr1
,
attr2
=>
$new_attr2
,
base
=> Base->new(
@base_args
),
},
$class
;
}
sub
method {
print
"Underived::method()\n"
;
}
my
$der
= Derived->new(1,2,3,4,5);
my
$und
= Underived->new(1,2,3,4,5);
$der
->method();
$und
->method();
$der
->basemethod();
$und
->basemethod();