• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Perl中的类与继承

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

先定义一个Person类

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人参与评论

请发表评论

全部评论

专题导读
上一篇:
Perl中的s///操作符发布时间:2022-07-22
下一篇:
perl学习笔记发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap