- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
sub new{ my $type=shift; my %parm=@_; my $this=[]; $this-[0]=$parm{Name}; $this-[1]=$parm{color}; $this-[2]=$parm{size}; bless $this.$type; } 用数组的办法 构造对象时,可以如下传递参数: $mug=TV::new(‘Name’=’top’,’color’=black,’size’=21); 操作符=与逗号操作符功能相同,但一般采用=,因为=可读性好些。 如: Name=$mug={‘Name’}; 12.4.2析构函数 Perl跟踪对象的链接数目,当某对象的最后一个应用释放到内存池时,该对象就自动销毁。对象的析构发生在代码停止后,脚本要结束时。对于全局变量,析构发生在最后一行代码运行之后。 采用DESTORY方法可以在对象被释放之前获得控制权。DESTORY方法不会自动调用其它的DESTORY方法,perl不做内置的析构工作,当一个对象被释放时,其内含的所有对象引用自动释放和销毁。 和其它的面向对象的程序设计语言类似,DESTORY一般不需要定义,它是系统自动完成的,当某个对象的引用数小于1时,它就会自动的调用DETORY来释放所占的内存空间,在程序退出时,一次性的销毁所占的所有空间。 12.5 继承和重载 12.5.1 继承 类方法通过@ISA数组继承。变量的继承要明确的指定。 Bean.pm package Bean; require Exporter; @ISA=qw{EXporter}; @EXPORT=qw(set BeanType); sub new{ my $type=shift; my $this={}; $this-{Bean}=Colombian; bless $this,$type; return $this; } sub setBeanType{ my ($class,$name)=@_; $class-{Bean}=$name; print set bean to $name\n; } 1; package Coffee; require Exporter; require Bean; @ISA=qw(EXporter,Bean); @EXPORT=qw(set Imports,declarteMain,closeMain); sub setCoffeeType{ my($class,$name)=@_; $class-{Coffee}=$name; print Set coffee type to $name\n; } sub new{ my $type=shift; my $this=Bean-new(); $this-{Coffee}=Instant; bless $this,$type; return $this; } 1; 这里,用require函数导入了Bean.pm文件和所有相关的函数,方法SetCoffeeType用于设置局域变量$class-{‘Coffee’}的值。在new方法中,$this指向Bean.pm返回的匿名哈希变量的指针,而不是在本地创建一个。 如:my $this=(); my $this=$theSuperClasww-new(); 12.5.2 子类方法的重载 重载也是类的一个特性,当子类需要扩充基类的方法以获得更具体或不同的功能时,就需要用到类的重载。类的重载的好处在于可以获得基类的方法和功能,但有时也可以获得更具体或不同的功能。最常见的重载是函数重载,如果在子类中定义了与基类中同名的一个成员函数,就称子类重载了基类的函数。 12.5.3 perl类和对象的一些注释 面向对象编程的最大好处是代码重用,perl的包和模块用my关键字可以实现数据封装功能,但是perl并不保证子类一定不会直接访问基类的变量,如: (1)一定要通过方法来访问类变量; (2)一定不要从模块外部直接访问类变量。 第12章 面向对象编程 12.1 概述 包,库和模块都是面向对象编程. Perl5可以实现面向对象编程的大多数技术,如: 多态性,封装,继承等概念,方法重载等. 12.2 对象和类 12.2.1 对象和类 对象可以用来进行处理和使用的一种事物. Perl5中的对象基于对包中数据项的引用,处理对象称为操作,一般用子程序来实现;而方法一般用来处理对象的子程序. 12.2.2 perl中的类 Perl是一种面向对象的语言,类是一个perl包,其中包含了对象的属性和方法,但包不一定是类,方法是一个perl子程序.类名是它的第一个参数.对象是对类中数据项的引用.需要强调的是,一个perl类是仅仅一
您可能关注的文档
最近下载
- 生产经营单位生产安全事故应急预案编制导则GB/T29639-2020 .pptx VIP
- 唯一住房补贴申请书模板.docx VIP
- 员工花名册(自带公式).xlsx VIP
- 第三章交强险.pptx VIP
- 预防校园欺凌主题班会课件(共23张PPT).pptx VIP
- 《管理会计学》教案全套 孙茂竹 第1--12章 管理会计概论--- 管理会计报告.docx
- 顾客异议的类型.ppt VIP
- 预应力管桩试桩方案.doc VIP
- 北京宜通cl-06c六轴控制器说明书.pdf VIP
- 中职英语高教版(2025)基础模块2 Unit 1 Travel 单词课件(共61张PPT)(含音频+视频).pptx VIP
文档评论(0)