Perl中的类与继承

http://www.cnblogs.com/softwaretesting/archive/2011/07/31/2123259.html


package Person ; # package name must be same as file name

sub new{
    my $class = shift ;
    my ($name, $age) = @_ ;
    my $self = {
        "name" => $name,
        "age" => $age,
    } ;
    bless($self, $class) ;
    return $self ;
}

sub set_name{
    my ($self, $name) = @_ ;
    $self->{name} = $name ;
}

sub get_name{
    my $self = shift ;
    return $self->{name} ;
}

sub set_age{
    my($self, $age) = @_ ;
    $self->{age} = $age ;
}

sub get_age{
    my $self = shift ;
    return $self->{age} ;
}

1 ;
复制代码

在定义一个Employee类,继承自Person类

复制代码
use Person ;
package Employee ;

@ISA = qw(Person) ;

sub new{
    my $class = shift ;
    my ($name, $age, $salary) = @_ ;
    my $self = Person->new($name, $age) ;
    $self->{salary} = $salary ;
    bless($self, $class) ;
    return $self ;
}

sub get_salary{
    my $self = shift ;
    return $self->{salary} ;
}

sub set_salary{
    my ($self, $salary) = @_ ;
    $self->{salary} = $salary ;
}

sub change_salary{
    my $self = shift ;
    my $new_salary = shift ;
    $self->{salary} = $new_salary ;
}

1 ;
复制代码

创建一个Employee对象并输出其信息,然后修改Employee的属性并再次输出信息

复制代码
my $employee = Employee->new("zdd", "30", "11k") ;
print $employee->get_name(), "\n" ;
print $employee->get_age(), "\n" ;
print $employee->get_salary(), "\n" ;

# Change age and salary
$employee->set_age(35) ;
$employee->set_salary("20k") ;

# print new info
print $employee->get_name(), "\n" ;
print $employee->get_age(), "\n" ;
print $employee->get_salary(), "\n" ;
复制代码

几点说明

1 继承通过将基类加入@ISA数组实现

2 类成员函数的第一个参数默认是调用者所属的类

3 get_xxx成员函数中第一行代码 $self = shift ; 不可以省略。

以上所提到的类是基于匿名哈希实现的,还有一种方法是使用数组来实现,但是比较繁琐,具体看这里

http://club.topsage.com/thread-422598-1-1.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值