天天看点

关于方法重载

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

}

}

}