Perl 教程 之 Perl 面向对象 5
Perl 面向对象
Perl 中有两种不同地面向对象编程的实现:
一是基于匿名哈希表的方式,每个对象实例的实质就是一个指向匿名哈希表的引用。在这个匿名哈希表中,存储了所有的实例属性。
二是基于数组的方式,在定义一个类的时候,我们将为每一个实例属性创建一个数组,而每一个对象实例的实质就是一个指向这些数组中某一行索引的引用。在这些数组中,存储着所有的实例属性。
继承
Perl 里 类方法通过@ISA数组继承,这个数组里面包含其他包(类)的名字,变量的继承必须明确设定。
多继承就是这个@ISA数组包含多个类(包)名字。
通过@ISA只能继承方法,不能继承数据。
接下来我们创建一个 Employee 类继承 Person 类。
Employee.pm 文件代码如下所示:
实例
!/usr/bin/perl
package Employee;
use Person;
use strict;
our @ISA = qw(Person); # 从 Person 继承
现在 Employee 类包含了 Person 类的所有方法和属性,我们在 main.pl 文件中输入以下代码,并执行:
实例
!/usr/bin/perl
use Employee;
$object = new Employee( "小明", "王", 23234345);
获取姓名
$firstName = $object->getFirstName();
print "设置前姓名为 : $firstName\n";
使用辅助函数设置姓名
$object->setFirstName( "小强" );
通过辅助函数获取姓名
$firstName = $object->getFirstName();
print "设置后姓名为 : $firstName\n";
执行以上程序后,输出结果为:
$ perl main.pl
名字:小明
姓氏:王
编号:23234345
设置前姓名为 : 小明
设置后姓名为 : 小强