快速业务通道

《 Essential ActionScript 2.0 》中文精华版 第 12 期

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-12
不是必需的),构造函数被放置在属性定义之后、方法定义之前。注意,构造函数声明不能包括返回值类型: class Box {
private var width:Number;
private var height:Number;

public function Box ( ) {
// 初始化width和height
width = 1;
height = 1;
}

// 从此之后是典型的方法定义...
}现在,我们每次创建一个新的Box实例,其宽度和高度都被初始化为1(否则,它们的默认值是undefined)。这虽然很便利,但是却过于僵化。为了允许为每个Box实例指定widthheight属性,因此我们要为构造函数定义添加参数: public function Box (w:Number, h:Number) {
// 使用传给参数w和h的值初始化width和height
width = w;
height = h;
}在使用new操作符创建对象时,构造函数的参数值被传入,如下所示: new SomeClass(value1, value2,...valuen);其中SomeClass是被初始化的类名,value1, value2, ...valuen是传给构造函数的值。例如,我们使用初始值width2height3来创建一个新的Box实例: new Box(2, 3);构造函数通常使用参数值来设置属性值,但是参数同样用来指定当一个实例被创建时应该发生什么。例如,对于Chat类的构造函数可以包含一个参数doConnect,该参数表明Chat实例是否应该自动连接刚刚创建的聊天服务器 class Chat {
public function Chat (server:String, port:Number, doConnect:Boolean) {
if (doConnect) {
connect(server, port);
}
}
}4.5.1 Simulating Multiple Constructor Functions
(模拟多构造函数) 不同于Java,对于一个单独的类,ActionScript不支持多构造函数(在Java中称为overloaded constructors)。在Java中,一个类根据不同的参数数目和类型来初始化实例。在ActionScript中,模拟该功能必需手动实现。例4-5,在我们Box类的基础上,展示了一种在ActionScript中模拟多构造函数的可能方式。 在例4-5中,Box构造函数将其工作委派给三个伪构造器方法,分别命名为boxNoArgs( )boxString( )boxNumberNumber( )。每个伪构造器的名字表明了参数的数目和数据类型(例如,boxNumberNumber( )定义了两个Number型的参数)。注意,这个例子中的伪构造器没有为它们的参数定义数据类型;在代码注释中会讨论这个异常。 例4-5 模拟重载构造函数 class Box {
public var width:Number;
public var height:Number;

/**
* Box构造器。将初始化委派给boxNoArgs( ), boxString( ), or boxNumberNumber( ).
*/

public function Box (a1:Object, a2:Object) {
// 正如我们前面学到的,arguments可以存储传给该函数的参数值
// 如果无参数传入构造函数,则调用boxNoArgs( )
// 如果传入一个字符串参数,则调用boxString( )
// 如果传入两个数字参数,则调用boxNumberNumber( )
if (arguments.length == 0) {
boxNoArgs( );
} else if (typeof a1 == "string")
// 在以下代码中,我们通常需要将a1强制类型转换为
// boxString( )方法第一个参数所需的类型(即,String)。
// 然而,ActionScript 2.0类型转换操作符不能用于String和Number数据类型,
// 很不幸,因此对于boxString( )和boxNumberNumber( )的参数
// 我们无法进行类型转换。
// 更多关于类型转换的细节请见第三章。
boxString(a1);
} else if (typeof a1 == "number" && typeof a2 == "number") {
// 没有强制类型转换为Number,见前面注释
boxNumberNumber(a1, a2);
} else {
// 显示方法使用不当的警告
trace("Unexpected number of arguments passed to Box constructor.");
}
}

/**

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号