12.5 类继承
对Perl的对象剩下的内容而言,从一个类继承另外一个类并不需要给这门语法增加特殊的语法,当你调用一个方法的时候,
如果Perl在调用者的包里找不到这个字过程,那么他就检查@ISA数组
perl是这样实现继承的,一个包@ISA数组了的每个元素都保持另外一个包的名字
当缺失方法的时候就搜索这些包。
比如,下面的代码把Horse类变成了Critter类的子类 (这里Critter是父类,或称为基类)
我们用our 声明@ISA,因为它必须是一个打包的变量,而不是用my声明
package Horse;
our @ISA = "Critter";
你现在可以在原来Critter使用的任何地方使用Horse类或者对象了
Critter 是一个正确的基类,可以用于 继承。
Horse 类:
[root@wx03 test]# cat Horse.pm
package Horse;
our @ISA = "Critter";
sub new {
my $invocant = shift;
my $class = ref($invocant) || $invocant;
my $self = {
color => "bay",
legs => 4,
owner => undef,
@_, # 覆盖以前的属性
};
return bless $self, $class;
};
sub sum_arr {
$self=shift;
my $a&#
perl 继承 @ISA
最新推荐文章于 2022-04-10 12:06:39 发布
Perl的类继承通过@ISA数组实现,当在子类中调用方法时,如果子类中不存在该方法,Perl会沿着@ISA数组定义的父类路径查找。例子中,Horse类继承自Critter类,通过`our @ISA = "Critter";`声明。在Horse类中定义的新方法和未定义的方法会在Critter类中查找。这样可以复用并扩展基类的功能。
摘要由CSDN通过智能技术生成