天天看點

關于方法重載

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

}

}

}