术语汇编 Perl类概念详解

本文和大家重点讨论一下Perl类的概念,.要做好在Perl下的面向对象编程,你不仅要简单的用LarryWall提出Perl面向对象编程的标准,同时要对Perl类的概念及应用非常熟悉。

Perl类

大多数人其实都没有注意到,Perl也是一种面向对象的编程语言,但它又和传统的面向对象的语言:如C++,Java完全不一样.要做好在Perl下的面向对象编程,你只要简单的用LarryWall提出Perl面向对象编程的标准就可以了。

这里举一个简单的例子:Person类代表一个人,包含一个人的一些简单的信息:名字,社会保障号等。

要创建一个Perl类,首先我们先要创建一个包--package.一个package是一个自包含的单元,它包含一些用户定义的变量和方法,类似于Java中的Package和C#中的namespace,也起到一个命名空间的作用.不同命名空间下的相同名字的变量,相互之间是不冲突的。

声明一个Perl类:packagePerson;

Person的作用域一直到这个文件的结尾.

在类中定义一个方法:在Person类中定义一个print的打印方法:

subprint  


{  


my($self)=@_;  


#printPersoninfo  



printf("Name:%s%s\n\n",$self->firstName,$self->lastName);  



}  


 

要调用这个方法,类似PHP,只需要:$khurt->print();

$khurt是一个Person的实例.my($self)=@_;这句意思,是把当前的变量赋给$self这个私有的变量.@_是Perl内置的一个变量,代表当前正在访问的变量,它是一个全局变量。


构造函数

要创建一个Perl类的实例,我们需要一个构造函数.当然,这个构造函数肯定要在相应的package中定义.大多数的Perl程序员把构造函数命

名为new,其实无论这个函数叫什么名字,Perl都能接受.

每个Perl对象的实例说到底都是一个数据类型,或者是数组型,或者是Hash列表型等等.这就象C++中的ADT(AbstractDataType)一样.

Person的构造函数如下,我们用的是一个Hash的引用作为一个类的实例:

#constructor  


subnew{  



my$self={  




_firstName=>undef,  




_lastName=>undef,  




_ssn=>undef,  




_address=>undef  



};  


bless$self,'Person';  


return$self;  


} 

这里,我们在Person包中创建了一个叫new的方法,实际上也就是在Persong类中创建了一个构造函数.这个对象的属性全部都在$self变量中了.bless$self'Person'这句比较重要.bless函数的第一个参数是一个变量的引用,第二参数是一个Perl类名.这个函数的作用是说明$self变量是属于Person类的。

要创建一个Person的实例:

my$khurt=Person->new();

我们还没有创建任何的访问方法和错误检查方法.为了让构造函数更加的可靠和可继承,将构造函数重写:

相关推荐