zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    【代码笔记】iOS-NSLog的使用
    【代码笔记】iOS-NSJSONSerializationDemo
    【代码笔记】iOS-My97DatePicker日历
    【代码笔记】iOS-mp3的播放
    【代码笔记】iOS-MBProgressHUDDemo
    【代码笔记】iOS-MBProgressHUD
    【代码笔记】iOS-导航条的标题(label)
    【代码笔记】iOS-Label随字自动变大
    OC语言构造方法
    iOS开发UI篇—在ImageView中添加按钮以及Tag的参数说明
  • 原文地址:https://www.cnblogs.com/qinzb/p/8979085.html
Copyright © 2011-2022 走看看