术语汇编 Perl类概念详解

开发 架构
本文向大家简单介绍一下Perl类的概念,大多数人其实都没有注意到,Perl也是一种面向对象的编程语言,但它又和传统的面向对象的语言:如C++,Java完全不一样.

本文和大家重点讨论一下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的打印方法:

  1. subprint  
  2. {  
  3. my($self)=@_;  
  4. #printPersoninfo  
  5. printf("Name:%s%s\n\n",$self->firstName,$self->lastName);  
  6. }  
  7.  

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

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


构造函数

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

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

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

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

  1. #constructor  
  2. subnew{  
  3. my$self={  
  4. _firstName=>undef,  
  5. _lastName=>undef,  
  6. _ssn=>undef,  
  7. _address=>undef  
  8. };  
  9. bless$self,'Person';  
  10. return$self;  

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

要创建一个Person的实例:

my$khurt=Person->new();

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

  1. subnew{  
  2. my($class)=@_;  
  3. my$self={  
  4. _firstName=>undef,  
  5. _lastName=>undef,  
  6. _ssn=>undef,  
  7. _address=>undef  
  8. };  
  9. bless$self,$class;  
  10. return$self;  
  11. }  

 其它的面向对象语言有私有变量,保护变量这些概念,控制了变量的访问权限,防止变量被直接改变.Perl没有私有变量,但是还是可以通过访问函数来控制变量的访问权限。

 【编辑推荐】

 

  1. Perl类及创建方法揭秘
  2. Perl文件句柄概念详解
  3. 解析四大Perl操作符用法
  4. 专家推荐 几款常用Perl开发工具
  5. 学习笔记 Perl数字与字符串间的自动转换
责任编辑:佚名 来源: csdn.net
相关推荐

2010-07-15 15:47:46

Perl守护进程

2010-07-14 11:27:42

Perl多进程

2010-07-13 10:21:19

2010-07-19 16:56:56

Perl线程

2010-07-26 16:54:15

Perl引用

2010-07-12 14:23:52

UML公共机制

2010-07-13 09:02:16

Perl

2010-07-15 17:50:47

Perl模式

2010-07-16 17:12:58

Perl析构函数

2010-07-14 15:05:21

Perl文件句柄

2010-06-02 14:28:23

SVN版本控制

2010-07-13 09:58:51

Perl关联数组

2010-06-30 14:24:02

UML类图建模

2010-06-07 13:02:46

Hadoop简介

2010-08-05 14:51:36

AdobeFlex

2010-09-17 09:19:08

Java API

2010-07-20 16:25:50

Perl正则表达式

2010-07-05 09:59:27

UML类关系图

2010-08-10 10:32:02

Flex语言

2010-07-27 08:59:19

FlexBuilder
点赞
收藏

51CTO技术栈公众号