你能覆盖AS3中的功能吗?

ser*_*oth 1 actionscript actionscript-3

我是ActionScripting的新手,但我做了一些Java.我被告知他们有点相似.我正在编写我的swf文件,并集成了一些AS3.

function init():void{
  // do something
}

function init(var string:String):String{
  // do something else
}
Run Code Online (Sandbox Code Playgroud)

这是不允许在AS?如果没有,除此之外还有另一种处理方式吗?

提前致谢.

Pan*_*sis 5

是的,您可以覆盖功能.但是你给出的例子并不是压倒性的 - 它正在超载.对于覆盖函数,您基本上只需创建一个具有相同签名的函数和子类中的所有内容,并在其前面添加单词"override".

但是,您无法直接重载函数.如果需要可变数量的参数,则必须使用可选参数.像这样:

function init(str:String = null):String
{
    if (str == null)
    {
        // do one thing
        return null;
    }
    else
    {
        // do another thing
        return "someString";
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是你在AS3中能够做到的最好的事情.至少严格来说,无法超载功能是一种相当普遍的抱怨和语言的明显缺点.