快速业务通道

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

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-12


4.5 Constructor Functions (Take 2) (构造函数 第二部分) 我们几乎已经完成了Box类的例子。Box类已经有了可以调用的方法,并且可以检查和改变属性。现在让我们回到Box的构造函数,这个问题我们在本章前面的“构造函数 第一部分(Constructor Functions (Take 1))”中介绍过。 假设我们想使我们创建的每个Box实例的初始宽度width和高度height都是1。在实例创建过程中,我们需要某种事物可以设置每个新的Box实例的widthheight属性。这种事物就是我们所说的构造函数constructor function。 构造函数不负责创建新实例,而是用于初始化每一个新实例。当我们使用new操作符创建一个类的新实例时,此时该类的构造函数开始运行。在构造函数中,我们可以通过设置其属性或调用方法来制定最新创建的实例。 在一个类体中,我们使用function语句来定义一个构造函数,准确地说我们是定义一个方法。然而,一个构造函数定义必须遵守以下规则: ? 构造函数名必须与其类名严格匹配(大小写敏感)。 ? 构造函数名定义不可以指定返回值类型(即使Void也不可以)。 ? 构造函数不能有返回值(return语句只用于退出函数之用,不可以指定任何返回值)。 ? 构造函数定义不能包含static特性,但是可以使用publicprivate。 这里我们再来看一下我们早期创建的Box类的构造函数。第二行和第三行是(空)构造函数——构造函数体以及类的其余部分都被忽略了: class Box {
public function Box ( ) {
}
}在ActionScript 2.0中,构造函数只用于初始化实例。构造函数不是强制性的。如以前我们所知,当一个类没有明确定义一个构造函数时,ActionScript会自动提供一个缺省的构造函数,在新建类的实例时该构造函数不接受任何参数也不执行任何初始化。尽管这么做很方便,但作为一个最佳实践,总应该包含一个构造函数,即使它仅仅是一个空函数。使用空构造函数明确表明,该类设计不需要构造函数,而且应该附上一个注视会更有效。例如: class Box {
// 空构造函数。该类不需要初始化。
public function Box ( ) {
}
}注意,构造函数可以被声明为public或者private,就像普通方法一样。大多数构造函数都是公共的public,但是有一些特别的类需要一个私有private构造函数(相关的一例子,见第十七章)。声明为private的构造函数不能直接初始化。例如,如果我们为我们的Box类提供一个private构造函数: class Box {
private function Box ( ) {
}
} 当我们试图创建一个Box实例时: var b:Box = new Box( ); 编译器将产生以下错误: 不可以访问私有成员。 为了能够创建实例,具有私有构造函数的类必须提供一个创建以及返回实例的类方法。例如: class Box {
// 私有构造函数
private function Box ( ) {
}

// 返回新实例的类方法
public static function getBox ( ):Box {
return new Box( );
}
}

// 使用:
var b:Box = Box.getBox( );如果一个具有私有构造函数的类没有提供一个用于调用内部私有构造函数的公共类方法,你就不能初始化该类的对象。在下列情况中,你可以使用私有构造函数: ? 为了创建一个等价于Java风格抽象类的草稿(即,一个不能实例化的类,但是必须经过扩展才能使用,如第八章中所讨论的) ? 为了放置一些关于何时以及如何创建一个类实例的限制(例如,阻止一个程序创建多于一个类对象) 让我们来充实基本的Box构造函数,以便将1赋给每个新建的Box实例的widthheight属性。为了清楚,我们同样展示widthheight属性定义。按照惯例(但

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号