• as3.0 interface接口使用方法


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

    AS2.0的时候就支持接口了

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

    比方你定义了一个方法

    代码:


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


    參数 arg 的类型必须是 MyClass,由于我们须要在该方法中使用MyClassAPI
    MyClass是一个类的话,你传入的对象必须是MyClass类的实例或者是MyClass子类的对象,可是当你要传入的一个对象,他既不是MyClass类的实例也不是MyClass子类的对象,而是一个已经继承了其它类的对象呢,这样就难办了。 由于ASJava一样,都不同意多重继承,多重继承会带来使类结构变的复杂难以管理的麻烦。

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

    代码: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 上配置 lua 的服务器环境(enet)
    报错解决 unable to unroll loop, loop does not appear to terminate in a timely manner (994 iterations) or unrolled loop is too large, use the [unroll(n)] attribute to force an exact higher number
    开源许可证的选择
    Lua 协程
    [命令模式]在游戏开发中的应用
    NGUI 源码分析- AnchorPoint
    NGUI 源码分析- UIWidgetInspector
    Java程序员需要学习的知识点
    Linux下安装Perl和Perl的DBI模块
    Linux安装JDK
  • 原文地址:https://www.cnblogs.com/blfshiye/p/3791309.html
Copyright © 2020-2023  润新知