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 就会被马上调用)