注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Bioinformatics home

 
 
 

日志

 
 

perl 父类与子类  

2010-01-30 14:13:25|  分类: Perl |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

父类

package Person;
# require 5.005;
# $VERSION = '0.08';
# require Exporter;
# @ISA = qw( Exporter );
# @EXPORT_OK = qw( );
# @EXPORT = qw(getAge);
sub new
 {
   my $type = shift;  #其实shift类名给 $type 
   my %parm = @_;  #传递构造函数
   my $this = {};  #产生一个类
   $this->{"name"} = $parm{"name"}."Test";  #类属性赋值
   $this->{"age"} = $parm{"age"}; #类属性赋值   
   bless $this,$type;  # 祝福this类的类型或类名为$type ,就是相当于完成了类的构建,
   return $this; #返回祝福好的类,完成了类构造与初始化
}

sub getAge
{
  my $self=shift; #第一个参数为该类的引用 
  return $self->{"age"}+100;
}

1;

 

子类

package Employee;
use vars qw(@ISA);
use strict;
# Object preamble - inherits from Bio::Root::Object
use Person;
@ISA = qw(Person);
sub new
{
    my ($class) = @_;
    # Call the constructor of the parent class, Person.
    my $self = $class->SUPER::new($_[1], $_[2]); #调用父类构造函数,取得父类函数的方法和属性
    # Add few more attributes  
    bless $self, $class;
    return $self;
}


sub getName
{
  my $self=shift;
  print $self->getAge()+1000,"\n";
  return $self->{"name"}."YYYYYYYYYYYY";
}

1;

程序调用示例

use Person;
use Employee;
$a = Person->new(
"name" => 'xxx',
"age" => 21);
print $a->getAge();

$b=Employee->new("name" => 'xxx',"age" => 21);
print "\n";
print  $b->getName();

  评论这张
 
阅读(1110)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017