actionscript-3 - 您如何决定使用抽象类和接口(interface)?

标签 actionscript-3 oop interface abstract-class

我已经深入了解了 OOP、设计模式和 ActionScript 3 的世界,但我仍然很好奇如何知道何时使用抽象类(不支持抽象类的 AS3 的伪类)和接口(interface)。对我来说,两者都只是作为模板,确保在给定的类中实现某些方法。区别仅仅在于抽象类需要继承而接口(interface)仅仅扩展吗?

最佳答案

如果您希望子类具有某些功能,请使用抽象类。例如,如果您有一组函数,您希望所有抽象基类的子类都具有这些函数。

如果您只想就行为/功能达成一般契约,请使用接口(interface)。如果您有一个函数或对象想要接受一组不同的对象,请使用接口(interface)。然后,您可以更改传入的对象,而无需更改采用该对象的方法或对象。

与抽象类相比,接口(interface)通常是松散的。如果您不断为接口(interface)的所有方法编写相同的代码,您就不会希望使用接口(interface)。使用抽象类并定义每个方法一次。

此外,如果您尝试创建特定的对象继承层次结构,您真的不想尝试仅使用接口(interface)来做到这一点。

此外,在某些语言中您只能有一个基类,如果一个对象已经有一个基类,您将必须进行一些重构才能使用抽象基类。这可能意味着也可能不意味着您可能想要使用界面。

正如 @tvanfosson 所说,使用大量接口(interface)并不是一个坏主意,当你真正理解抽象类和接口(interface)时,这并不是一个非此即彼的情况。特定情况可以同时使用抽象类和接口(interface),或者两者都不使用。我有时喜欢使用接口(interface)来限制方法或对象可以在传入的参数对象上访问的内容。

关于actionscript-3 - 您如何决定使用抽象类和接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/558164/

相关文章:

android - 使用 ActionScript 3 在 Android 中录制声音

java - 使用依赖注入(inject)时是否存在 'new' 的情况?

c++ - 类间共享功能

java - 构造函数与 Java 中的普通方法有何不同?

java - 在哪里可以找到 org.omg.CosTransactions 包

c# - 在C#中实现自己的集合但需要修改IEnumerable?

interface - 从混合接口(interface)类型创建类

flash - 是否可以嵌入文件夹中的所有文件?

flash - AS3 KeyboardEvents 在我点击屏幕按钮后才会触发

c++ - 从 C++ 到 AS3 : what are fundamental AS3 data structures classes?