加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl学习笔记七———继承

发布时间:2020-12-15 23:48:30 所属栏目:大数据 来源:网络整理
导读:点击打开链接 package Person ; # package name must be same as file namesub new{ my $class = shift ; my ($name,$age) = @_ ; my $self = { "name" = $name,"age" = $age,} ; bless($self,$class) ; return $self ;}sub set_name{ my ($self,$name) = @_

点击打开链接

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" ;

1,shift的含义: shift 的意思就是把整个 array 的第一个 value 取出,并将 array 长度减一(有点像 pop out)

2,bless()函数的作用:点击打开链接

3,qw()的作用,w(foo bar baz) 相当于?('foo','bar','baz')

4,self的作用?$self 在这里相当于 C++ 里的 this 指针,由于 $self 是“偷偷地”传进来的,这时参数列表相当于 ($self,ARG1,ARG2),所以要用 shift 移去,这样子才能得到传入参数列表 (ARG1,ARG2)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读