大雀软件园

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

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

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

1; 此刻,咱们写一个大略的perl脚从来运用该类的本领,底下是创造一个java applet源代码骨子的剧本代码: #!/usr/bin/perluse cocoa;$cup = new cocoa;$cup->setimports( 'java.io.inputstream', 'java.net.*');$cup->declaremain( "msg" , "java.applet.applet", "runnable");$cup->closemain();这段剧本创造了一个叫作msg的java applet,它扩充(extend)了java.applet.applet小运用步调并使之可运转(runnable),个中结果三行也不妨写成如次: cocoa::setimports($cup, 'java.io.inputstream', 'java.net.*');cocoa::declaremain($cup, "msg" , "java.applet.applet", "runnable");cocoa::closemain($cup); 其运转截止如次: /*** created by cocoa.pm** use at own risk */import java.io.inputstream;import java.net.*;public class msg extends java.applet.applet implements runnable {} 提防:即使用->操纵符挪用本领(也叫转弯抹角挪用),参数必需用括号括起来,如:$cup->setimports( 'java.io.inputstream', 'java.net.*');而双冒号挪用如:cocoa::setimports($cup, 'java.io.inputstream', 'java.net.*');也可去掉括号写成:cocoa::setimports $cup, 'java.io.inputstream', 'java.net.*' ;八、重载偶尔须要指定运用哪个类的本领,如两个各别的类有同名本领的功夫。假如类espresso和qava都设置了本领grind,不妨用::操纵符指定运用qava的本领:$mess = qava::grind("whole","lotta","bags");qava::grind($mess, "whole","lotta","bags");不妨按照步调的运转情景来采用运用哪个类的本领,这不妨经过运用标记援用去挪用来实行:$method = $local ? "qava::" : "espresso::";$cup->{$method}grind(@args);九、析构因变量perl盯梢东西的链接数量,当某东西的结果一个运用开释到外存池时,该东西就机动废弃。东西的析构爆发在代码遏止后,剧本将要中断时。对于全部变量而言,析构爆发在结果一条龙代码运转之后。即使你想在东西被开释之前获得遏制权,不妨设置destroy()本领。destroy()在东西将开释前被挪用,使你不妨做少许整理处事。destroy()因变量不机动挪用其它destroy()因变量,perl不做内置的析构处事。即使结构因变量从基类屡次bless,destroy()大概须要挪用其它类的destroy()因变量。当一个东西被开释时,其内含的一切东西援用机动开释、废弃。普遍来说,不须要设置destroy()因变量,即使须要,其情势如次:sub destroy {## add code here.#} 由于多种手段,perl运用了大略的、鉴于援用的废物接收体例。任何东西的援用数量必需大于零,要不该东西的外存就被开释。当步调退出时,perl的一个完全的搜索并废弃因变量举行废物接收,过程中的十足被大略地简略。在unix类的体例中,这像是过剩的,但在前嵌式体例或多线程情况中这真实很需要。十、接受类本领经过@isa数组接受,变量的接受必需精确设定。下例创造两个类bean.pm和coffee.pm,个中coffee.pm接受bean.pm的少许功效。此例演练怎样从基类(或称超类)接受范例变量,其本领为挪用基类的结构因变量并把本人的范例变量加到新东西中。bean.pm代码如次:package bean;require exporter;@isa = qw(exporter);@export = qw(setbeantype);sub new {my $type = shift;my $this = {};$this->{'bean'} = 'colombian';bless $this, $type;return $this;}## this subroutine sets the class namesub setbeantype{my ($class, $name) = @_;$class->{'bean'} = $name;print "set bean to $name \n";}1; 该类中,用$this变量树立一个隐姓埋名哈希表,将'bean'典型设为'colombian'。本领setbeantype()用来变换'bean'典型,它运用$class援用赢得对东西哈希表的考察。

热门阅览

最新排行

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