重复:接口与基类
我已经深入了解OOP,设计模式和动作脚本3的世界,我仍然很好奇如何知道何时使用Abstract类(对于不支持Abstract类的AS3的伪)和接口.对我来说,两者都只是作为模板来确保在给定的类中实现某些方法.区别仅在于抽象类需要继承而接口只是扩展吗?
谢谢,Brian Hodge hodgedev.com
如果您有一些希望它具有子类的功能,请使用抽象类.例如,如果您有一组希望所有基本抽象类的子类都具有的函数.
如果您只想获得有关行为/功能的一般合同,请使用界面.如果要将一个函数或对象包含在一组不同的对象中,请使用接口.然后,您可以更改传入的对象,而无需更改正在使用它的方法或对象.
与Abstract类相比,接口通常是松散的.在不断为所有接口的方法编写相同代码的情况下,您不希望使用接口.使用抽象类并定义每个方法一次.
此外,如果您尝试创建特定的对象继承层次结构,您实际上不希望尝试仅使用接口.
此外,在某些语言中,您只能拥有一个基类,如果一个对象已经有一个基类,那么您将不得不进行一些重构以使用抽象基类.这可能意味着也可能不意味着你可能想要使用inteface.
正如@tvanfosson指出的那样,使用大量接口并不是一个坏主意,当你真正理解抽象类和接口时,它实际上不是一个或两个情况.特定情况可以使用抽象类和接口,也可以两者都不使用.我喜欢有时使用接口来限制方法或对象可以在传入的参数对象上访问的内容.