有两点需要注意,一是AS3中并不支持方法的重载。二是override并不是重载关键字,而是继承中的方法重写。两者概念不一样。JAVA支持方法重载,包括构造函数也可以重载。
虽然不支持重载,但AS3提供了函数的...(rest)来支持不定量参数来传递参数,可以变相的实现重载。但用起来也不怎么方便额。下面是Frank写的一段代码,黒羽殿堂之路中也提到这样的方法。(用起来总是别扭)
*@
Author:frank
Site:www.2solo.cn
Date:2008.01.31
Info:测试重载
*/
package {
import flash.display.Sprite;
public class OverLoadSample extends Sprite {
private var paramA:Number=1;
private var paramB:String="1";
private var paramC:Object={a:1,b:2};
private var paramD:Boolean=false;
public function OverLoadSample() {
//分别给入不同类型的参数
testOverLoad(paramA,"A");
testOverLoad(paramB,"B");
testOverLoad(paramC,"C");
testOverLoad(paramD,"D");
testOverLoad();
}
private function testOverLoad(...args) {
switch (typeof(args[0])) {
case "object" :
testFuncObj(args);
break;
case "number" :
testFuncNum(args);
break;
case "string" :
testFuncStr(args);
break;
case "boolean" :
testFuncBool(args);
break;
default :
testFuncDefault(args);
break;
}
}
private function testFuncDefault(args):void {
trace("this is a unknown type");
}
private function testFuncNum(args):void {
trace("this is a number"+", param="+args[1]);
}
private function testFuncObj(args):void {
trace("this is a object"+", param="+args[1]);
}
private function testFuncStr(args):void {
trace("this is a string"+", param="+args[1]);
}
private function testFuncBool(args):void {
trace("this is a boolean"+", param="+args[1]);
}
}
}