Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Actionscript中接口的主要功能是什么?_Actionscript 3_Flash_Actionscript - Fatal编程技术网

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

Actionscript 3 Actionscript中接口的主要功能是什么?,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,我知道包是类和接口的集合,旨在对其内容进行组织和分类。 我还知道类是对象的定义,是对象、属性/变量和函数/方法的说明 然而,我还没有理解什么是接口,或者它的真正用途是什么 我已在Adobe网站上阅读了此定义….: 接口 用法 接口接口名称[扩展接口名称]{} 定义一个接口。接口是定义一组方法的数据类型;这些方法必须由实现接口的任何类定义 接口类似于类,但有以下重要区别: •接口仅包含方法声明,而不包含其实现。也就是说,实现接口的每个类都必须为接口中声明的每个方法提供一个实现 •接口方法定义不能有

我知道包是类和接口的集合,旨在对其内容进行组织和分类。 我还知道类是对象的定义,是对象、属性/变量和函数/方法的说明

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

我已在Adobe网站上阅读了此定义….:

接口

用法

接口接口名称[扩展接口名称]{}

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

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

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

接口
方法定义不能有任何属性,如
公共
私有
,但实现的方法必须在实现接口的类的定义中标记为
公共

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

与ActionScript2.0不同,ActionScript3.0允许在接口定义中使用getter和setter方法

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


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

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

作为一个现实世界的例子,您可能希望为一个游戏制作一个教程,其中逐个突出显示屏幕上的每个不同控件。每个控件可能会闪烁或反弹以突出显示自身,因此您可以说它们实现了一个“
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();

}

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

< P>尽管我在技术上是错误的,但是我认为接口类似于C++抽象类。

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

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


我相信接口是从引入它们的Java中借来的,以实现多态性(
ClassA
可以是
IFoo
IBar
类型),而无需继承多个抽象类(您只能扩展一个类,但可以实现任意数量的接口).

接口被视为实现它们的类的契约。通过使用接口,您正在使用一种称为多态性的OOP基本原理。多态性不仅仅适用于ActionScript。如果你用谷歌搜索“AS3 IAnimal”,第一个链接就是一个很好的解释。我的两分钱:每当我想到接口,我就会想到插件。如果要为现有应用程序编写插件,您需要确保它符合现有应用程序的方法大纲。因此,您的插件必须实现接口才能正确地与应用程序配合使用。它就像是未来类的模板。我也喜欢它在AS3中,因为它更容易为接口提供模拟(使用类似Mockolate的东西)。谢谢你的小课,David!我想我现在更明白了。