Actionscript中接口的主要功能是什么?

时间:2013-03-19 20:52:41

标签: actionscript-3 flash actionscript

我知道包是Classes和Interfaces的集合,旨在组织和分类其内容。 我也知道Classes是Objects的定义,以及它们的说明,它们的属性/变量,以及它们的函数/方法。

但是,我还没有理解界面是什么,或者它真正的用途......

我在Adobe的网站上看过这个定义..:

  

接口

     
    

用法

         
      
        

interface InterfaceName [extends InterfaceName ] {}

      
    
         

定义一个接口。接口是定义一组方法的数据类型;这些方法必须由实现该接口的任何类定义。

         

接口类似于类,具有以下重要差异:

         
      

•接口仅包含方法声明,而不包含其实现。也就是说,实现接口的每个类都必须为接口中声明的每个方法提供一个实现。

             

Interface方法定义不能包含publicprivate等任何属性,但实现的方法必须在实现该类的类的定义中标记为public接口

             

•接口可以通过extends语句继承多个接口,也可以通过implements语句继承。

    
         

与ActionScript 2.0不同,ActionScript 3.0允许在接口定义中使用getter和setter方法。

  

......但是,这太模糊了,对我没有帮助。

有没有人知道ActionScript中接口的用途和正确实现和/或设计?

3 个答案:

答案 0 :(得分:7)

接口基本上让你宣布“这个课可以做这些事。”

作为一个真实世界的例子,你可能想要制作一个游戏教程,逐一突出显示屏幕上的每个不同控件。每个控件可能会闪烁或反弹以突出显示自己,因此您可以说它们实现了“IHighlightable”界面,让他们处理其余的事情:

public interface IHighlightable {

    function highlight():void;

}

然后在你的控件中:

public class Control implements IHighlightable {

    public function highlight():void {
        // Bounce and flash!
    }

}

这意味着您可以执行以下操作:

private function highlightControl(tutorialItem:IHighlightable):void {

    tutorialItem.highlight();

}

重要的是,你可以让一个类实现多个接口,这在类共享能力时很有用,但是让它们都扩展一个公共基类是没有意义的。

答案 1 :(得分:1)

接口是合同。编译时机制强制您实现实现方法。在大型OOP代码库中,最佳做法是让其他类依赖于接口而不是其他类,因此您可以交换实现而无需更改消耗接口的代码(这种优势在实践中是可记录的,因为通常是接口也会改变。)

我相信接口是从Java借来的,它引入了它们以实现多态ClassA可以同时为IFooIBar类型)继承自多个抽象类(您只能扩展一个类,但您可以实现任意数量的接口)。

答案 2 :(得分:0)

虽然我在技术上是错误的,但我认为接口类似于C ++抽象类。


接口用于定义属性和方法,而无需实际实现它们。此外,它们无法实例化

var test:FooInterface = new FooInterface() // would error
相关问题