zoukankan      html  css  js  c++  java
  • perl 当前包会覆盖父类的同名方法

    12.5.2 访问被覆盖的方法:
    
    当一个类定义一个方法,那么该子过程覆盖任意基类中同名的方法。
    
    [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 {
           $self=shift;
           my $a=shift;
           my $b=shift;
           return $a + $b + 7;
    };
    1;
    [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(4,5);
    print "
    ";
    print $ed->sum(4,5)
    [root@wx03 test]# perl t6.pl 
    16
    16[root@wx03 test]# 
    
    
    会覆盖基类的相同方法;
    

  • 相关阅读:
    IDEA快捷的添加包名
    Spring源码(一)
    Java的理解
    剪绳子
    机器人的运动范围
    矩阵中的路径
    N皇后问题
    回溯法
    全排列
    反转链表
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350785.html
Copyright © 2011-2022 走看看