perl面向对象

  创建Person.pm模块

package Person;
sub new
{
    my $class = shift; #相当是 shift @_; 第一个就是类名即Person
    print "className $class \n"; #值为Person
     
    my $self = {
        _firstName => shift, #删除第一个并返回出去
        _lastName  => shift,  
        _ssn       => shift,
    };
    # 输出用户信息
    print "名字:$self->{_firstName}\n";
    print "姓氏:$self->{_lastName}\n";
    print "编号:$self->{_ssn}\n";
    bless $self, $class; #设置$self的类型为Person
    return $self;
}

sub setFirstName(){
    my($self, $firstName) = @_; #第一个变量是Person,后面的是参数
    $self->{_firstName} = $firstName if defined($firstName);
    return $self ->{_firstName};
}

sub getFirstName(){
    my($self) = @_;  #第一个变量是Person,后面的是参数
    return $self -> {_firstName};
}
1;

2 调用模块

use Person;
$object = new Person( "小明", "", 23234345);
$object->setFirstName('dashenbbb','gg99999');
$firstName = $object -> getFirstName();
print "firstName更改后值为: ",$object->getFirstName(),"\n";        

 3 方法继承和重写

package Employee;
use Person;
use strict;
our @ISA = qw(Person);    # 从 Person 继承
 
# 重写构造函数
sub new {
    my ($class) = @_;
 
    # 调用父类的构造函数
    my $self = $class->SUPER::new( $_[1], $_[2], $_[3] );
    # 添加更多属性
    $self->{_id}   = undef;
    $self->{_title} = undef;
    bless $self, $class;
    return $self;
}
 
# 重写方法
sub getFirstName {
    my( $self ) = @_;
    # 这是子类函数
    print "这是子类函数\n";
    return $self->{_firstName};
}
 
# 添加方法
sub setLastName{
    my ( $self, $lastName ) = @_;
    $self->{_lastName} = $lastName if defined($lastName);
    return $self->{_lastName};
}
 
sub getLastName {
    my( $self ) = @_;
    return $self->{_lastName};
}
 
1;

猜你喜欢

转载自www.cnblogs.com/qinzb/p/8979085.html
今日推荐