创建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;