perl 继承 @ISA
来源:互联网 发布:淘宝手机回收站 编辑:程序博客网 时间:2024/06/05 08:20
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=shift; my $b=shift; return $a + $b + 7;};1;基类 Critter类:[root@wx03 test]# [root@wx03 test]# cat Critter.pm package Critter;sub new { my $self = {}; my $invocant = shift; my $class = ref($invocant) || $invocant;my ($name)=@_; my $self = { "name" =>$name }; bless $self, $class; # Use class name to bless() reference return $self;};sub sum { $self=shift; my $a=shift; my $b=shift; return $a + $b;};1;[root@wx03 test]# cat t6.pl unshift(@INC,"/root/test"); use Horse;;#use base qw(Critter);require Critter;use Data::Dumper;$ed = Horse->new; # 四腿湾马print $ed->sum_arr(4,5);print "\n";print $ed->sum(4,5);[root@wx03 test]# perl t6.pl 169[root@wx03 test]# 假设你在 $steed 里有一个 Horse 对象,并且在他上面调用了一个 move:$steed->move(10);因为 $steed 是一个 Horse,Perl 对该方法的第一个选择是 Horse::move 子过程。如果 没有,Perl 先询问@Horse::ISA 的第一个元素,而不是生成一个运行时错误,这样将导致 查询到 Critter 包里,并找到Critter::move。如果也没有找到这个子过程,而且 Critter 有自己的 @Critter::ISA 数组,那么继续查询那里面的父类,看看有没有一个 move 方法,如此类推直到上升到继承级别里面一个没有 @ISA 的包
0 0
- perl 继承 @ISA
- perl use base 代替 @ISA
- 12.5.1 通过 @ISA 继承
- isa
- isa
- isa
- oo Perl 继承
- oo perl 继承问题
- perl 继承实现
- Perl面向对象--继承
- perl 继承概述
- perl 继承小例子
- perl 继承写法
- perl use base 继承
- perl模块编程之继承
- Perl 类继承简单讲解
- Perl中的类与继承
- [Perl]继承SUPER,-norequire,use parent
- PhpanAlysis分词技术
- ubutun系统搭建java开发环境
- Hibernate4注解方法(全)
- 关于java中通配符的使用规则
- 喵喵
- perl 继承 @ISA
- HDU 1114(完全背包)
- 屏蔽百度等所有搜索引擎蜘蛛方法加meta标签
- OC实现容器(C版OOP思想实现)
- misc杂项设备
- source insight中文注释乱码问题的解决方案
- 《jQuery从入门到精通》前言
- 单例模式-c++实现
- UI设计实验一