有兩點需要注意,一是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]);
}
}
}