• perl面向对象


      创建Person.pm模块

    package Person;
    sub new
    {
        my $class = shift; #相当是 shift @_; 第一个就是类名即Person
        print "className $class 
    "; #值为Person
         
        my $self = {
            _firstName => shift, #删除第一个并返回出去
            _lastName  => shift,  
            _ssn       => shift,
        };
        # 输出用户信息
        print "名字:$self->{_firstName}
    ";
        print "姓氏:$self->{_lastName}
    ";
        print "编号:$self->{_ssn}
    ";
        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(),"
    ";        

     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 "这是子类函数
    ";
        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;
  • 相关阅读:
    css知识点
    javascript 中闭包
    javascript 继承方法总结
    css滚动滚轮事件
    关于闭包的总结
    xpth xslt
    好的js函数
    自动化测试实施(4)
    自动化测试实施(5)
    自动化测试实施(3)
  • 原文地址:https://www.cnblogs.com/qinzb/p/8979085.html
Copyright © 2020-2023  润新知