as3.0 interface接口使用方法

[转]as3.0 interface接口使用方法

AS在2.0的时候就支持接口了



接口能够让你的程序更具扩展性和灵活性,打个例如



比方你定义了一个方法

代码:

public function aMethod(arg:MyClass):void { .....}

參数 arg 的类型必须是 MyClass,由于我们须要在该方法中使用MyClass的API

而MyClass是一个类的话,你传入的对象必须是MyClass类的实例或者是MyClass子类的对象,可是当你要传入的一个对象,他既不是MyClass类的实例也不是MyClass子类的对象,而是一个已经继承了其它类的对象呢,这样就难办了。 由于AS和Java一样,都不同意多重继承,多重继承会带来使类结构变的复杂难以管理的麻烦。



这时候接口就能派上用场了。

代码:public function aMethod(arg:MyInterface):void { .....}

这时候我们传入的对象他仅仅要是实现了MyInterface,都能够,不管是继承了什么详细类,并且一个类能够实现多个接口,这样就攻克了不同意多重继承的问题。



以上仅仅是我个人举的一个小小样例,我的认识可能还非常浅显,详细大家还是要多看oo方面的资料,网上有非常多,多用Google吧

注意:

1、在接口中定义了几个方法,实现时就得实现几个方法,方法名称、參数个数、參数值、返回值等都得一样。

样例:

1、定义接口。

package {

public interface IExample {

function TestFunc(param:String):String;

function TestFunc_1(param:Number,param_1:Number):Number;

}

}

2、实现接口。

package {

public class TestInterface implements IExample {

public function TestInterface() {

}

public function TestFunc(param:String):String {

return param;

}

public function TestFunc_1(param:Number,param_1:Number):Number {

return param;

}

}

}

package {

public class TestInterface_1 implements IExample {

public function TestInterface_1() {

}

public function TestFunc(param:String):String {

return param;

}

public function TestFunc_1(param:Number,param_1:Number):Number {

return param+param_1;

}

}

}

3、使用接口类:

package {

            import flash.display.Sprite;

            public class InterfaceExample extends Sprite

{

            private var MyNumber:Number=20;

            private var MyTestInterface,MyTestInterface_1:IExample;

            public function InterfaceExample()

{

                      MyTestInterface=new TestInterface();

                      trace(MyTestInterface.TestFunc("Hi..Hi"));        //output:Hi..Hi

                        trace(MyTestInterface.TestFunc_1(MyNumber,MyNumber+1));   //output:20

                        MyTestInterface_1=new TestInterface_1();

                       trace(MyTestInterface_1.TestFunc("ho..Hi"));     //output:ho..Hi

                        trace(MyTestInterface_1.TestFunc_1(MyNumber,MyNumber+1));   //output:41

}

                       }

}

上一篇:Centos下启动和关闭MySQL


下一篇:FastDFS与Nginx的配置说明