2

我知道包是类和接口的集合,旨在组织和分类其内容。我也知道类是对象的定义,以及它们的指令、它们的属性/变量以及它们的函数/方法。

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

我在 Adob​​e 的网站上阅读了这个定义..:

界面

用法

interface InterfaceName [extends InterfaceName ] {}

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

接口类似于类,但有以下重要区别:

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

Interface方法定义不能有任何属性,例如publicor private,但实现的方法必须public在实现接口的类的定义中标记。

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

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

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

有谁知道 ActionScript 中接口的目的和正确实现和/或设计?

4

3 回答 3

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();

}

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

于 2013-03-19T22:00:32.520 回答
1

接口是一种契约。它是强制你实现方法的编译时机制。在大型 OOP 代码库中,让其他类依赖于接口而不是其他类是最佳实践,因此您可以在不更改使用接口的代码的情况下交换实现(这个优势在实践中是可忽略的,因为接口通常也会改变)。

我相信接口是从 Java 中借来的,Java 引入了它们来实现多态ClassA可以是类型IFoo并且IBar同时),而不是从多个抽象类继承(你只能扩展一个类,但你可以实现任意数量的接口)。

于 2013-03-20T03:50:34.660 回答
0

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


接口旨在定义属性和方法,而无需实际实现它们。此外,它们不能被实例化

var test:FooInterface = new FooInterface() // would error
于 2013-03-19T22:36:51.797 回答