Actionscript 3 Actionscript中接口的主要功能是什么?
我知道包是类和接口的集合,旨在对其内容进行组织和分类。 我还知道类是对象的定义,是对象、属性/变量和函数/方法的说明 然而,我还没有理解什么是接口,或者它的真正用途是什么 我已在Adobe网站上阅读了此定义….: 接口 用法Actionscript 3 Actionscript中接口的主要功能是什么?,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,我知道包是类和接口的集合,旨在对其内容进行组织和分类。 我还知道类是对象的定义,是对象、属性/变量和函数/方法的说明 然而,我还没有理解什么是接口,或者它的真正用途是什么 我已在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!我想我现在更明白了。