大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> CGI专区 -> Perl教学(13)Perl的面向对象编程之六

Perl教学(13)Perl的面向对象编程之六

时间: 2021-07-31 作者:daque

十一、子类本领的重载接受的长处在乎不妨赢得基类输入的本领的功效,而偶尔须要对基类的本领重载赢得更简直或各别的功效。底下在bean.pm类中介入本领printtype(),代码如次:sub printtype {my $class = shift @_;print "the type of bean is $class->{'bean'} \n";} 而后革新其@export数组来输入:@export = qw ( setbeantype , printtype );此刻来挪用因变量printtype(),有三种挪用本领:$cup->coffee::printtype();$cup->printtype();$cup->bean::printtype(); 输入辨别如次:the type of bean is mixedthe type of bean is mixedthe type of bean is mixed 干什么都一律呢?由于在子类中没有设置因变量printtype(),以是本质均挪用了基类中的本领。即使想使子类有其本人的printtype()因变量,必需在coffee.pm类中加以设置:## this routine prints the type of $class->{'coffee'}#sub printtype {my $class = shift @_;print "the type of coffee is $class->{'coffee'} \n";} 而后革新其@export数组:@export = qw(setimports, declaremain, closemain, printtype);此刻输入截止形成了:the type of coffee is instantthe type of coffee is instantthe type of bean is mixed 此刻惟有当给定了bean::时才挪用基类的本领,要不径直挪用子类的本领。那么即使不领会基类名该怎样挪用基类本领呢?本领是运用伪类保持字super::。在类本领内运用语法如:$this->super::function(...argument list...); ,它将从@isa列表中探求。方才的语句用super::替代bean::不妨写为$cup->super::printtype(); ,其截止输入沟通,为:the type of bean is mixed十二、perl类和东西的少许解释oop的最大长处即是代码重用。oop用数据封装来湮没少许搀杂的代码,perl的包和模块经过my因变量供给数据封装功效,然而perl并不保护子类确定不会径直考察基类的变量,这真实缩小了数据封装的长处,固然这种举措是不妨做到的,但却是个很坏的编制程序作风。提防: 1、确定要经过本领来考察类变量。2、确定不要从模块外部径直考察类变量。当编写包时,该当保护本领所需的前提已完备或经过参数传播给它。在包里面,应保护对全部变量的考察只用经过本领传播的援用来考察。对于本领要运用的静态或全部数据,该当在基类顶用local()来设置,子类经过挪用基类来获得。偶尔,子类大概须要变换这种数据,这时候,基类大概就不领会还好吗去探求新的数据,所以,这时候最佳设置对该数据的援用,子类和基类都经过援用来变换该数据。结果,你将看到如次办法来运用东西和类:use coffee::bean;这句语句的含意是“在@inc数组一切目次的coffee子目次来探求bean.pm”。即使把bean.pm移到./coffee目次,上头的例子将用这一use语句来处事。如许的长处是有层次地构造类的代码。再如,底下的语句:use another::sub::menu;表示着如次子目次树:./another/sub/menu.pm

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.