Perl 中的对象

让我们开始在Perl中实现对象之前,先来定义几个预备性的术语。

一个对象(还可以称做一个实例,instance)就像一辆给定的轿车,拥有下面的这些内容:

1.属性 又称特性(如颜色:红色;座位数:4;动力:180马力)

2.标示(identity)

3.行为(behavior)

某个特定类型的对象被称作属于一个类(class),我的车与你的车都属于叫做汽车的类,

或者如果你并不关心具体的类别,那么还可以属于名为车辆的类。

一个类的所有对象都具有相同的功能。

属性:

一个对象就是一组属性的集合,像我们在第2章”实现复杂的数据结构”中所讨论的那样,

我们可以用数组或散列来表示这哥集合。例如,如果你需要记录下雇员的详细情况的话,

你可以选择下面的一种方式:

bless 以一个普通的指向数据结构的引用为参数。它将会把那个数据结构(注意,不是引用本身)

标记为属于某个特定的包,

bless 的好处在于它提供给我们一种直接使用该对象的方式,如:

首先像以前一样创建两个对象:

$emp1=RegularEmployee::new(‘John Doe’,32,#多态性
‘Software Engineer’,5000);

$emp2=RegularEmployee::new(‘John Doe’,35,#多态性
‘Auditor’,65,90);

现在我们使用箭头记号来直接调用实例的方法,或者用面向对象的话说,调用对象的方法:

直接调用

$emp1->promote();

$emp2->compute_ytd_income();

当Perl 看到emp1>promote(),emp1 属于哪个类(也就是在其中执行bless的)

在这里,它是RegularEmployee.

下面的例子:

$details =; ###输入由制表符分隔的雇员详细信息

type,name,age,position)split(/\t/.$details);

创建相应类的雇员对象

现在就可以像往常一样来使用这个对象了

$emp->compute_ytd_income();

对象的销毁:

Perl的垃圾收集是确定的,只要已经不再有任何东西指向这个对象,DESTROY 就会被马上调用)