perl面向对象实例

2019-10-01 11:23:50丽君

Perl 提供了两种不同的形式去调用一个方法。最简单的形式是采用箭头符号:


        my $fred = Critter->find("Fred");
        $fred->display("Height", "Weight");

你可以早就熟悉了引用的 "->" 操作符。事实上,因为上面的 $fred是一个指向了对象的引用,因此你也可以把箭头操作符理解为另外一种形式的解引用。

出现在箭头左边的引用或者类名,将作为第一个参数传递给箭头右边的方法。所以上面的代码就分别相当于这样:


        my $fred = Critter::find("Critter", "Fred");
        Critter::display($fred, "Height", "Weight");

简单示例

1、说明

本程序演示了在Perl中如何进行面向对象编程:演示程序包含两个文件:person.pl 和 person.pm,把 person.pl 和 person.pm 放在当前目录下,运行"perl person.pl"即可以看到结果。person.pm定义了名为person的类。person.pl中创建了person类的实例,并测试了person的成员方法。

2、person.pm的内容


#!/usr/bin/perl -w
package person;
use strict;

sub new {
my $class = shift();
print("CLASS = $classn");
my $self = {};
$self->{"name"} = shift();
$self->{"sex"} = shift();
bless $self, $class;
return $self;
}

sub getName {
my ($self) = @_;
return $self->{"name"};
}

sub setName {
my ($self, $name) = @_;
$self->{"name"} = $name;
}

sub getSex {
my ($self) = @_;
return $self->{"sex"};
}

sub setSex {
my ($self, $sex) = @_;
$self->{"sex"} = $sex;
}

3、person.pl的内容


#!/usr/bin/perl -w
use strict;
use person;

sub main()
{
my $tom = person->new("Tom", "male");
my $kiss = person->new("Kiss", "female");
my @persons = ($tom, $kiss);
for my $p (@persons) {
printf("NAME: %stSEX: %sn", $p->getName(), $p->getSex());
}
}

&main();

4、程序运行结果


CLASS = person
CLASS = person
NAME: Tom SEX: male
NAME: Kiss SEX: female