zhanbaocheng

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吧 as3.0 interface接口用法 - 超级大白菜 - 菜园

注意:

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

                }
                       }
}

评论

热度(1)