Perl中的多级继承
我有一个与Perl中的多级继承有关的问题。Perl中的多级继承
这里是我的代码
mod.pm
package first;
sub disp {
print "INSIDE FIRST\n";
}
package second;
@ISA = qw(first);
sub disp {
print "INSIDE SECOND\n";
}
package third;
@ISA = qw(second);
sub new {
$class = shift;
$ref = {};
bless $ref, $class;
return $ref;
}
sub show {
$self = shift;
print "INSIDE THIRD\n";
}
1;
prog.pl
use mod;
$obj = third->new();
$obj->show();
$obj->disp();
我有一个包含三个班的.pm文件。我想使用第三类的对象访问第一个类中的disp
方法。我不确定这可以如何工作。
我试图使用两种方式来访问:
- 使用类名=>第一:: DISP()
- 使用SUPER内第二封装DISP方法=> $自我> SUPER :: DISP( );
但我不知道如何直接访问使用第三类的对象。
如果你需要这样做,那么你已经错误地定义了你的类。
third
类继承自second
类。 second
有它自己的定义disp
,所以它从来没有试图从它的超类first
继承该方法。这意味着third
得到在second
定义的实现简单的答案是要致电first::disp
别的东西。这样second
不会有方法的定义,如果你解释潜在的问题继承将再次调用
,为什么要忽略继承的方法,那么也许我们可以帮你找到一个更好的办法
也请注意,封装和模块文件应以大写字母开始,每个班通常是在它自己的文件,因此你通常会在First.pm
等
只是试图找到一种方法,我可以使用第三个包的对象访问第一个包中的disp方法。 –
@ s.patra:我意识到这一点,但你能解释*为什么*。这些软件包是你写的东西,还是你从别的地方得到的?如果我能看到真实的代码,这将有所帮助。 – Borodin
我想在我的框架中实现这个概念,这将不可能在这里发布。所以我只写了一段代码来验证它是如何工作的。 –
$obj->first::disp()
使用package First
,但你是什么要求做的事情是你绝对不应该做的。修复你的设计。
你为什么要这么做? – simbabque