本文和大家重点讨论一下Perl类、对象、包的概念及使用,Perl类是一个Perl包,其中含提供对象方法的Perl类,而对象是对Perl类中数据项的引用。

专业成都网站建设公司,做排名好的好网站,排在同行前面,为您带来客户和效益!创新互联公司为您提供成都网站建设,五站合一网站设计制作,服务好的网站设计公司,成都网站设计、成都网站制作负责任的成都网站制作公司!
Perl类、对象、包概念解析
Perl类与对象
◆Perl类是一个Perl包,其中含提供对象方法的Perl类。
 ◆方法是一个Perl子程序,Perl类名是其***个参数。
 ◆对象是对Perl类中数据项的引用。
◆首先,创建一个名为Cocoa.pm的包文件(扩展名pm是包的缺省扩展名,意为PerlModule)。一个模块就是一个包,一个包就是一个Perl类。在做其它事之前,先加入1;”这样一行,当你增加其它行时,记住保留“1;”为***一行。这是Perl包的必需条件,否则该包就不会被Perl处理。下面是该文件的基本结构。
包
packageCocoa;
 requireExporter;
 @ISA=qw(Exporter);
 @EXPORT=qw(setImports,declareMain,closeMain);
 #这两行包含上Exporter.pm模块,并把ExporterPerl类名加入@ISA数组以供查找。接下来把你自己的Perl类方法列在@EXPORT数组中就可以了。例如想输出方法closeMain和declareMain,语句如下:@EXPORT=qw(declareMain,closeMain);
构造函数
构造函数是Perl类的子程序,它返回与Perl类名相关的一个引用。将Perl类名与引用相结合称为“祝福”一个对象,因为建立该结合的函数名为bless(),其语法为:
 #blessYeReference[,classname]
 #YeReference是对被“祝福”的对象的引用,classname是可选项,指定对象获取方法的包名用于继承其他Perl类,其缺省值为当前包名。
 创建一个构建函数的方法为返回已与该Perl类结合的内部结构的引用,如:构造函数
  
- subnew{
 - my$this={};#Createananonymoushash,and#selfpointstoit.
 - bless$this;#ConnectthehashtothepackageCocoa.bless$this,$parentClass
 - return$this;#Returnthereferencetothehash.
 - }
 
 {}创建一个对不含键/值对的哈希表(即关联数组)的引用,返回值被赋给局域变量$this。函数bless()取出该引用,告诉对象它引用的是Cocoa,***返回该引用。函数的返回值现在指向这个匿名哈希表。
 从new()函数返回后,$this引用被销毁,但调用函数保存了对该哈希表的引用,因此该哈希表的引用数不会为零,从而使Perl在内存中保存该哈希表。
Perl类的调用
- 1#!/usr/bin/perl
 - 2push(@INC,'pwd');
 - 3useCocoa;
 - 4$cup=newCocoa;#或者$cup=cocoa->new();或$cup=Cocoa::new();
 
 包的构造函数
  
- subnew{
 - my$type=shift;
 - my%parm=@_;
 - my$this=[];
 - $this->[0]=$parm{'Name'};
 - $this->[1]=$parm{'x'};
 - $this->[2]=$parm{'y'};
 - bless$this,$type;
 - }
 
新建对象:
$mug=Cocoa::new('Name'=>'top','x'=>10,'y'=>20);
 操作符=>与逗号操作服功能相同,但=>可读性好。访问方法如下:
 print"Name=$mug->{'Name'}\n";
 print"x=$mug->{'x'}\n";
 print"y=$mug->{'y'}\n";
Perl类静态方法:
- 1.subnameLister{
 - 2.my$this=shift;#构造函数即静态方法。虚方法通常首先把***个参数shift到变量self或this中,然后将该值作普通的引用使用
 - 3.my($keys,$value);
 - 4.while(($key,$value)=each(%$this)){
 - 5.print"\t$keyis$value.\n";
 - 6.}
 - 7.}
 
【编辑推荐】
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号