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)
继承概述 继承概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可. 多个类可以称为子类,单独这个类称为父类或者超类. 子类可以直接访 ...
随机推荐
- python字符串方法以及注释
转自fishC论坛:http://bbs.fishc.com/forum.php?mod=viewthread&tid=38992&extra=page%3D1%26filter%3D ...
- USACO March. 2012
Connect the Cows Times17 水题 Landscaping Flowerpot Tractor 广搜 搜到边界就可以终止了 没什么难度 #include <stdio.h&g ...
- pkg_utility
创建包名: CREATE OR REPLACE PACKAGE BODY PKG_UTILITY AS --字符串转换到索引表 PROCEDURE STR_TO_LIST(PI_STR IN VARC ...
- Google Code Jam Round 1C 2015 Problem A. Brattleship
Problem You're about to play a simplified "battleship" game with your little brother. The ...
- Xcode4.5 本地化,多语言设置
网上已有很多关于ios本地化的博客和资料,由于部分原作者使用的Xcode版本较早,4.5以后的版本已不再支持该方法,后来也没有更新,因此在此写一点学习资料分享出来.废话不多说. ios本地化主 ...
- Linux 下IOport编程訪问
曾经写的一篇笔记.偶尔翻出来了,放在这里做个纪念 Linux 下IOport编程訪问 这里记录的方法是在用户态訪问IOport,不涉及驱动程序的编写. 首先要包括头文件 /usr/include/as ...
- LVM的一般操作过程
1. 在磁盘分区上建立物理卷 #fdisk /dev/hdb #pvdisplay /dev/hdb1 //在已经建立好的分区或硬盘上建立物理卷 #pvcreate /dev/hdb1 2 ...
- iOS开发之自己封装一个progressHUD控件
看了几个轻量级的progress view 我觉得KVNProgress做的最漂亮吧 突然我想为什么我自己不封装一个控件 然后我研究了一下KVNProgress KVN简单的界面是由storyboar ...
- 【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
原文 [译]在Asp.Net中操作PDF - iTextSharp - 使用字体 紧接着前面我对iTextSharp简介博文,iTextSharp是一个免费的允许Asp.Net对PDF进行操作的第三方 ...
- 刘汝佳黑书 pku等oj题目
原文地址:刘汝佳黑书 pku等oj题目[转]作者:小博博Mr 一.动态规划参考资料:刘汝佳<算法艺术与信息学竞赛><算法导论> 推荐题目:http://acm.pku.edu. ...