继承父构造函数

sla*_*law 1 perl inheritance constructor

我是Perl继承的新手,并且无法找到继承父构造函数的明确指令.我假设父类中的所有方法(包括构造函数)都是继承的,但看起来并非如此.所以,这还不够:

package Child;
use strict;
use Parent;
our @ISA=qw(Parent);
Run Code Online (Sandbox Code Playgroud)

相反,我需要添加一个调用父构造函数的构造函数:

package Child;
use strict;
use Parent;
our @ISA=qw(Parent);

sub new {
  my $self=Parent::new(shift);
  bless $self;
  return $self;
}
Run Code Online (Sandbox Code Playgroud)

也许有人可以为我澄清逻辑并告诉我是否继承父构造函数而不执行上面的操作(显式声明并调用父构造函数)?

yst*_*sth 6

你不需要这样做; 代码中的其他地方出了问题.

这是一个完整的工作示例:

main.pl:

use strict;
use warnings;
use Subclass;
my $object = Subclass->new();
print "object is a ", ref $object, "\n";
Run Code Online (Sandbox Code Playgroud)

Subclass.pm:

package Subclass;
use strict;
use warnings;
use parent 'Superclass';
1;
Run Code Online (Sandbox Code Playgroud)

Superclass.pm:

package Superclass;
use strict;
use warnings;
sub new {
    my $class = $_[0];
    return bless {}, $class;
}
1;
Run Code Online (Sandbox Code Playgroud)

use parent 'Superclass' 只需加载Superclass并为您设置@ISA.