1. <pre name="code" class="html">[root@wx03 test]# cat Horse.pm
  2. package Horse;
  3. ##Horse继承了Critter类,Critter这里是基类或者父类
  4. use base qw(Critter);
  5. sub new {
  6. my $invocant = shift;
  7. my $class = ref($invocant) || $invocant;
  8. my $self = {
  9. color => "bay",
  10. legs => 4,
  11. owner => 'scan',
  12. @_, # 覆盖以前的属性
  13. };
  14. return bless $self, $class;
  15. #return $self;
  16. };
  17. sub sum1 {
  18. $self=shift;
  19. my $a=shift;
  20. my $b=shift;
  21. return $a + $b + 7;
  22. };
  23.  
  24. our @arr=qw/1 2 3 4 5 6 7/;
  25. our %h1=(1,2,3,4,5,6,7,8);
  26. 1;
  27.  
  28. [root@wx03 test]# cat Critter.pm
  29. package Critter;
  30.  
  31. sub sum2 {
  32. $self=shift;
  33. my $a=shift;
  34. my $b=shift;
  35. return $a + $b;
  36. };
  37.  
  38. sub fun1 {
  39. $self=shift;
  40. message::message($self);
  41. };
  42.  
  43. sub fun2 {
  44. $self=shift;
  45. $var='bosdadada';
  46. return $var;
  47. };
  48. sub on_receive_msg:lvalue{
  49. $self=shift;
  50. $self->{name}="aabbccdd123141242";
  51. $self->{on_receive_msg};
  52. };
  53.  
  54. our $str="12312";
  55. 1;
  56.  
  57. /*******************
  58. [root@wx03 test]# cat t10.pl
  59. unshift(@INC,"/root/test");
  60. use Horse;;
  61. my $ua=Horse->new();
  62.  
  63. my $str=$ua->fun2();
  64. print $str;
  65. print "\n";
  66.  
  67. [root@wx03 test]# perl t10.pl
  68. bosdadada
  69.  
  70. 如果去掉Horse类里的继承:
  71.  
  72. package Horse;
  73. #use base qw(Critter);
  74. sub new {
  75. my $invocant = shift;
  76.  
  77. [root@wx03 test]# perl t10.pl
  78. Can't locate object method "fun2" via package "Horse" at t10.pl line 6.
  79.  
  80. 提示找不到fun2方法
  81.  
  82. /***********************
  83. [root@wx03 test]# cat t10.pl
  84. unshift(@INC,"/root/test");
  85. use Horse;;
  86. my $ua=Horse->new();
  87.  
  88. my $str=$ua->fun1();
  89. print $str;
  90. print "\n";
  91.  
  92. [root@wx03 test]# perl t10.pl
  93. Undefined subroutine &message::message called at Critter.pm line 15.
  94.  
  95. 没有use message;:
  96.  
  97. package Critter;
  98. #use message;
  99.  
  100. sub sum2 {
  101. $self=shift;
  102. my $a=shift;
  103. my $b=shift;
  104. return $a + $b;
  105. };
  106.  
  107. sub fun1 {
  108. $self=shift;
  109. message::message($self);
  110. };
  111.  
  112. 解决方案:
  113.  
  114. 1):
  115. package Critter;
  116. ##继承message类
  117. use base qw/message/;
  118.  
  119. sub sum2 {
  120. $self=shift;
  121. my $a=shift;
  122. my $b=shift;
  123. return $a + $b;
  124. };
  125.  
  126. sub fun1 {
  127. $self=shift;
  128. $self->message();
  129. };
  130.  
  131. 2):
  132. package Critter;
  133. use message;
  134.  
  135. sub sum2 {
  136. $self=shift;
  137. my $a=shift;
  138. my $b=shift;
  139. return $a + $b;
  140. };
  141.  
  142. sub fun1 {
  143. $self=shift;
  144. message::message($self);
  145. # $self->message();
  146. };
  1.  

perl 继承概述的更多相关文章

  1. Java继承概述

    继承概述 : 父类(超类,基类): 子类(派生类): extends 只能继承一个类,Java不支持多重继承: 子类继承父类之后,子类可以调用父类的属性和方法, 也可以重写父类的属性和方法,还可以增加 ...

  2. perl 继承 @ISA

    12.5 类继承 对Perl的对象剩下的内容而言,从一个类继承另外一个类并不需要给这门语法增加特殊的语法,当你调用一个方法的时候, 如果Perl在调用者的包里找不到这个字过程,那么他就检查@ISA数组 ...

  3. perl 继承小例子

    <pre name="code" class="html"><pre name="code" class="ht ...

  4. js 继承概述

    上文讲述过js实现面向对象,一定是能够实现继承的效果的.尽管说非常多的js框架都帮助我们实现了继承的功能.或者说在日常的工作和学习中我们压根就用不到js的继承,可是我们还是须要了解一下js中继承.以方 ...

  5. java的三大特性之一继承概述

    0.继承-----注意事项 00.子类最多只能继承一个父类(指直接继承) 01.java所有的类都是Object的子类 02.JPK6.0中有202个包3777个类,接口,异常,枚举,注释和错误 03 ...

  6. perl 继承写法

    use base (Critter); 和 BEGIN{ require Critter; @ISA=qw/Critter/; } 这两种写法是等价

  7. Perl 的继承

    Perl 类的定义 Perl的一个packag可以作为一个类使用,文件后缀名为.pm,并且把package里的函数当作类的方法来用.如: package Person; 创建和使用对象 大多数程序使用 ...

  8. java7-3 继承

    1.继承概述: 把多个类中相同的内容给提取出来定义到一个类中. 如何实现继承呢? Java提供了关键字:extends 格式: class 子类名 extends 父类名 {} 父类也称为基类.超类: ...

  9. Java笔记(十三)……面向对象III继承(inheritance)

    继承概述 继承概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可. 多个类可以称为子类,单独这个类称为父类或者超类. 子类可以直接访 ...

随机推荐

  1. python字符串方法以及注释

    转自fishC论坛:http://bbs.fishc.com/forum.php?mod=viewthread&tid=38992&extra=page%3D1%26filter%3D ...

  2. USACO March. 2012

    Connect the Cows Times17 水题 Landscaping Flowerpot Tractor 广搜 搜到边界就可以终止了 没什么难度 #include <stdio.h&g ...

  3. pkg_utility

    创建包名: CREATE OR REPLACE PACKAGE BODY PKG_UTILITY AS --字符串转换到索引表 PROCEDURE STR_TO_LIST(PI_STR IN VARC ...

  4. Google Code Jam Round 1C 2015 Problem A. Brattleship

    Problem You're about to play a simplified "battleship" game with your little brother. The ...

  5. Xcode4.5 本地化,多语言设置

    网上已有很多关于ios本地化的博客和资料,由于部分原作者使用的Xcode版本较早,4.5以后的版本已不再支持该方法,后来也没有更新,因此在此写一点学习资料分享出来.废话不多说.     ios本地化主 ...

  6. Linux 下IOport编程訪问

    曾经写的一篇笔记.偶尔翻出来了,放在这里做个纪念 Linux 下IOport编程訪问 这里记录的方法是在用户态訪问IOport,不涉及驱动程序的编写. 首先要包括头文件 /usr/include/as ...

  7. LVM的一般操作过程

    1. 在磁盘分区上建立物理卷  #fdisk /dev/hdb  #pvdisplay /dev/hdb1 //在已经建立好的分区或硬盘上建立物理卷  #pvcreate /dev/hdb1    2 ...

  8. iOS开发之自己封装一个progressHUD控件

    看了几个轻量级的progress view 我觉得KVNProgress做的最漂亮吧 突然我想为什么我自己不封装一个控件 然后我研究了一下KVNProgress KVN简单的界面是由storyboar ...

  9. 【译】在Asp.Net中操作PDF - iTextSharp - 使用字体

    原文 [译]在Asp.Net中操作PDF - iTextSharp - 使用字体 紧接着前面我对iTextSharp简介博文,iTextSharp是一个免费的允许Asp.Net对PDF进行操作的第三方 ...

  10. 刘汝佳黑书 pku等oj题目

    原文地址:刘汝佳黑书 pku等oj题目[转]作者:小博博Mr 一.动态规划参考资料:刘汝佳<算法艺术与信息学竞赛><算法导论> 推荐题目:http://acm.pku.edu. ...