perl 继承概述
<pre name="code" class="html">[root@wx03 test]# cat Horse.pm
package Horse;
##Horse继承了Critter类,Critter这里是基类或者父类
use base qw(Critter);
sub new {
my $invocant = shift;
my $class = ref($invocant) || $invocant;
my $self = {
color => "bay",
legs => 4,
owner => 'scan',
@_, # 覆盖以前的属性
};
return bless $self, $class;
#return $self;
};
sub sum1 {
$self=shift;
my $a=shift;
my $b=shift;
return $a + $b + 7;
}; our @arr=qw/1 2 3 4 5 6 7/;
our %h1=(1,2,3,4,5,6,7,8);
1; [root@wx03 test]# cat Critter.pm
package Critter; sub sum2 {
$self=shift;
my $a=shift;
my $b=shift;
return $a + $b;
}; sub fun1 {
$self=shift;
message::message($self);
}; sub fun2 {
$self=shift;
$var='bosdadada';
return $var;
};
sub on_receive_msg:lvalue{
$self=shift;
$self->{name}="aabbccdd123141242";
$self->{on_receive_msg};
}; our $str="12312";
1; /*******************
[root@wx03 test]# cat t10.pl
unshift(@INC,"/root/test");
use Horse;;
my $ua=Horse->new(); my $str=$ua->fun2();
print $str;
print "\n"; [root@wx03 test]# perl t10.pl
bosdadada 如果去掉Horse类里的继承: package Horse;
#use base qw(Critter);
sub new {
my $invocant = shift; [root@wx03 test]# perl t10.pl
Can't locate object method "fun2" via package "Horse" at t10.pl line 6. 提示找不到fun2方法 /***********************
[root@wx03 test]# cat t10.pl
unshift(@INC,"/root/test");
use Horse;;
my $ua=Horse->new(); my $str=$ua->fun1();
print $str;
print "\n"; [root@wx03 test]# perl t10.pl
Undefined subroutine &message::message called at Critter.pm line 15. 没有use message;: package Critter;
#use message; sub sum2 {
$self=shift;
my $a=shift;
my $b=shift;
return $a + $b;
}; sub fun1 {
$self=shift;
message::message($self);
}; 解决方案: 1):
package Critter;
##继承message类
use base qw/message/; sub sum2 {
$self=shift;
my $a=shift;
my $b=shift;
return $a + $b;
}; sub fun1 {
$self=shift;
$self->message();
}; 2):
package Critter;
use message; sub sum2 {
$self=shift;
my $a=shift;
my $b=shift;
return $a + $b;
}; sub fun1 {
$self=shift;
message::message($self);
# $self->message();
};
perl 继承概述的更多相关文章
- Java继承概述
继承概述 : 父类(超类,基类): 子类(派生类): extends 只能继承一个类,Java不支持多重继承: 子类继承父类之后,子类可以调用父类的属性和方法, 也可以重写父类的属性和方法,还可以增加 ...
- perl 继承 @ISA
12.5 类继承 对Perl的对象剩下的内容而言,从一个类继承另外一个类并不需要给这门语法增加特殊的语法,当你调用一个方法的时候, 如果Perl在调用者的包里找不到这个字过程,那么他就检查@ISA数组 ...
- perl 继承小例子
<pre name="code" class="html"><pre name="code" class="ht ...
- js 继承概述
上文讲述过js实现面向对象,一定是能够实现继承的效果的.尽管说非常多的js框架都帮助我们实现了继承的功能.或者说在日常的工作和学习中我们压根就用不到js的继承,可是我们还是须要了解一下js中继承.以方 ...
- java的三大特性之一继承概述
0.继承-----注意事项 00.子类最多只能继承一个父类(指直接继承) 01.java所有的类都是Object的子类 02.JPK6.0中有202个包3777个类,接口,异常,枚举,注释和错误 03 ...
- perl 继承写法
use base (Critter); 和 BEGIN{ require Critter; @ISA=qw/Critter/; } 这两种写法是等价
- Perl 的继承
Perl 类的定义 Perl的一个packag可以作为一个类使用,文件后缀名为.pm,并且把package里的函数当作类的方法来用.如: package Person; 创建和使用对象 大多数程序使用 ...
- java7-3 继承
1.继承概述: 把多个类中相同的内容给提取出来定义到一个类中. 如何实现继承呢? Java提供了关键字:extends 格式: class 子类名 extends 父类名 {} 父类也称为基类.超类: ...
- Java笔记(十三)……面向对象III继承(inheritance)
继承概述 继承概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可. 多个类可以称为子类,单独这个类称为父类或者超类. 子类可以直接访 ...
随机推荐
- Treap的读书笔记2
近期開始了自己高级数据结构之旅,在这次旅行中.我将持续把一些高级的数据结构从理论到编码都过一遍,同一时候通过博客形式分享出来.希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构.支持插入.删除 ...
- 浅谈独立使用NDK编译库文件(Android)
阅读前准备 这是一篇相对入门的文章.文中会涉及到少许NDK的知识,但个人认为对初学者来说都相对比较实用,因为都是在平时项目中遇到的(目前自己也是初学者).一些其他高深的技术不再本文探讨范围之内(因为我 ...
- Codeforces Round #246 (Div. 2)
题目链接:Codeforces Round #246 (Div. 2) A:直接找满足的人数,然后整除3就是答案 B:开一个vis数组记录每一个衣服的主场和客场出现次数.然后输出的时候主场数量加上反复 ...
- 案例分析:java中substring引发的Full gc
问题定位 由于应用频繁地Full gc,就dump了内存下来用MAT分析,发现有个map占用了98%的内存,于是找到这个map private ConcurrentMap<String, Str ...
- 代理丶通知丶KVO之间区别和各自优势
文/OyeOnoOmg(简书作者)原文链接:http://www.jianshu.com/p/75d3fd218a23著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 今天在网上看到一个 ...
- iOS UIWebView 之 UIProgressView
之前做等待跳转都是用UIActivityIndicatorView ,后来做webView 加载页面的时候,发现了一个特别好用又超级炫酷的加载提示NJKWebViewProgress,作者巧妙的通过计 ...
- STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷
STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷 http://www.openedv.com/thread-63849-1-1.html 实现思路:采 用STM32F103的串口1,并配 ...
- BZOJ 4034: [HAOI2015]T2( 树链剖分 )
树链剖分...子树的树链剖分序必定是一段区间 , 先记录一下就好了 ------------------------------------------------------------------ ...
- C语言深度剖析---const关键字(转载)
const是constant的缩写,是恒定不变的意思.被const修饰的值,是只读变量. 1.const修饰只读变量,具有不变性 #include <stdio.h> int m ...
- POJ 2479 不相交最大子段和
题目意思还是很好理解的,在一个数列中,找出不相交的两个子串使得其和最大. 解题思路: 对于每个i来说,求出[0 ~ i - 1] 的最大子段和以及[i ~ n - 1]的最大子段和,在加起来,求最大的 ...