当前位置:  开发笔记 > 编程语言 > 正文

ActionScript-3不能有多个构造函数?

如何解决《ActionScript-3不能有多个构造函数?》经验,为你挑选了2个好方法。

我有

    public function Shard() {
    }

    public function Shard(x:Number, y:Number, vx:Number, vy:Number, rotation:Number, spin:Number)
    {
      ...
    }

我得到了第二个构造函数:

找到了多个构造函数定义.可能未在代码中定义构造函数.

那么,ActionScript-3不能有多个构造函数?



1> Patrick..:

不,你不能有多个构造函数既不具有不同签名的相同函数,但你可以使用默认参数:

public function Shard(x:Number=NaN, y:Number=NaN) {
  //...
}

然后你可以打电话new Shard()new Shard(100)new Shard(100, 200)

或者你也可以使用变量参数:

public function Shard(...args){
 if (args.length==0) {
   //...
 } else {
  //...
  var firstArg:Object=args[0];
  //...
 }
}



2> Gunslinger47..:

它甚至比那更广泛.AS3根本不支持函数重载.

您可以使用参数默认值模拟多个构造函数的外观和/或将参数动态分派给各种init方法.或者,自定义对象工厂或静态创建方法可以提供帮助.


+1.我已经使用静态方法初始化并返回一个新实例(有点像工厂).通常,这些方法在同一个类中定义,仅用于简化调用代码的接口.在某些情况下,这是一个简单而有效的解决方法(尽管如果你想拥有不同的这些"构造函数",你必须进行名称修改,因为编译器不会为你做这个)
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有