温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Perl的Perl面向对象编程

发布时间:2021-12-06 10:57:00 来源:亿速云 阅读:113 作者:小新 栏目:开发技术

这篇文章主要介绍如何使用Perl的Perl面向对象编程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、模块简介

模块(module)就是Perl包(pachage)。Perl中的对象基于对包中数据项的引用。(引用见第x章引用)。
详见http://www.nease.net/tppmsgs/msgs0.htm#28的perlmod和perlobj。
在用其他语言进行Perl面向对象编程时,先声明一个类然后创建该类的对象(实例),特定类任何对象的行为方式是相同的,由类方法确定,能够通过定义新类或从现存类继承来创建类。已熟悉Perl面向对象编程的人能够在此碰到许多熟悉的术语。Perl一直是个Perl面向对象的语言,在Perl5中,语法略有变动,更规范化了对象的使用。

下面三个定义对理解对象、类和方法在Perl中如何工作至关重要。
◆类是个Perl包,其中含提供对象方法的类。
◆方法是个Perl子程式,类名是其***个参数。
◆对象是对类中数据项的引用。.

二、Perl中的类

再强调一下,一个Perl类是仅是个包而已。当您看到Perl文档中提到“类”时,把他看作“包”就行了。Perl5的语法能够创建类,假如您已熟悉C,那么大部分语法您已掌控了。和Perl4不同的概念是用双冒号(::)来标识基本类和继承类(子类)。
Perl面向对象的一个重要特性是继承。Perl中的继承特性和其他Perl面向对象语言不完全相同,他只继承方法,您必须用自己的机制来实现数据的继承。
因为每个类是个包,所以他有自己的名字空间及自己的符号名关联数组(详见第x章关联数组),每个类因而能够使用自己的单独符号名集。和包的引用结合,能够用单引号(\\')操作符来定位类中的变量,类中成员的定位形式如:$class\\'$member。在Perl5中,可用双冒号替代单引号来获得引用,如:$class\\'$member和$class::$member相同。.

三、创建类

本节介绍创建一个新类的必要步骤。下面使用的例子是创建一个称为Cocoa的简单的类,其功能是输出一个简单的Java应用的源码的必要部分。放心,这个例子无需您有Java的知识,但也不会使您成为Java专家,其目的是讲述创建类的概念。
首先,创建一个名为Cocoa.pm的包文档(扩展名pm是包的缺省扩展名,意为PerlModule)。一个模块就是个包,一个包就是个类。在做其他事之前,先加入“1;”这样一行,当您增加其他行时,记住保留“1;”为***一行。这是Perl包的必需条件,否则该包就不会被Perl处理。.

四、构造函数

Perl面向对象中构造函数是类的子程式,他返回和类名相关的一个引用。将类名和引用相结合称为“祝福”一个对象,因为建立该结合的函数名为bless(),其语法为:
blessYeReference[,classname]
YeReference是对被“祝福”的对象的引用,classname是可选项,指定对象获取方法的包名,其缺省值为当前包名。
创建一个构建函数的方法为返回已和该类结合的内部结构的引用。如..

subnew{  my$this={};#Createananonymoushash,and#selfpointstoit.  bless$this;#ConnectthehashtothepackageCocoa.  return$this;#Returnthereferencetothehash.  }

五、方法

Perl类的方法只但是是个Perl子程式而已,也即通常所说的成员函数。Perl面向对象中Perl的方法定义不提供任何特别语法,但规定方法的***个参数为对象或其被引用的包。Perl有两种方法:静态方法和虚方法。
静态方法***个参数为类名,虚方法***个参数为对象的引用。方法处理***个参数的方式决定了他是静态的还是虚的。静态方法一般忽略掉***个参数,因为他们已知道自己在哪个类了,构造函数即静态方法。虚方法通常首先把***个参数shift到变量self或this中,然后将该值作普通的引用使用。.

六、方法的输出

假如您现在想引用Cocoa.pm包,将会得到编译错误说未找到方法,这是因为Cocoa.pm的方法还没有输出。输出方法需要Exporter模块,在包的开始部分加上下列两行:
requireExporter;
@ISA=qw(Exporter);
Perl面向对象中Perl类的继承是通过@ISA数组实现的。@ISA数组无需在任何包中定义,然而,一旦他被定义,Perl就把他看作目录名的特别数组。他和@INC数组类似,@INC是包含文档的寻找路径。@ISA数组含有类(包)名,当一个方法在当前包中未找到时就到@ISA中的包去寻找。@ISA中还含有当前类继承的基类名。

类中调用的任何方法必须属于同一个类或@ISA数组定义的基类。假如一个方法在@ISA数组中未找到,Perl就到AUTOLOAD()子程式中寻找,这个可选的子程式在当前包中用sub定义。若使用AUTOLOAD子程式,必须用useAutoload;语句调用autoload.pm包。AUTOLOAD子程式尝试从已安装的Perl库中装载调用的方法。假如AUTOLOAD也失败了,Perl再到UNIVERSAL类做***一次尝试,假如仍失败,Perl就生成关于该无法解析函数的错误。..

七、方法的调用

调用一个对象的方法有两种方法,一是通过该象的引用(虚方法),一是直接使用类名(静态方法)。。

以上是“如何使用Perl的Perl面向对象编程”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI