我想知道你们在应用程序开发期间如何决定何时使用抽象类或接口类,因为它们都提供了类似的功能,但略有不同。我感谢任何帮助。谢谢。
答案 0 :(得分:6)
如果您拥有继承者的默认方法(附带代码),请使用抽象。如果您只需确保从此父级继承的类应实现定义的所有方法,请使用接口。注意事项:只有在您打算强制执行结构和组织(通常是团队)时才使用抽象类和接口。有性能开销。
答案 1 :(得分:4)
当我希望继承类继承某些功能时,我使用抽象类,当我想为一组类设置一些最小结构标准时,我使用接口。
要记住的一件事是,任何给定的类都可以“继承”(技术上实现)许多接口但只有一个子类(不管是抽象的还是非抽象的)。
答案 2 :(得分:3)
当我正在开发并尝试决定是使用接口还是抽象类时,我通常会考虑将继承的类是否只包含相同的结构(方法,属性等)但实现方式不同。
如果方法的实现会有所不同,但我想从结构的角度确保相同性,我使用的是接口。如果结构和实现相同,我倾向于使用抽象类。
答案 3 :(得分:1)
PHP之类的语言支持多个接口实现,但不支持多类继承,这通常是决定的一部分 - 您的类是否支持多个行为(接口),还是作为一种类型的事物(基类)?< / p>
还存在如何实现基本功能的问题。如果您使用的方法类似于template method pattern,您可以使用所有派生类的通用实现代码,那么您将需要使用抽象基类。
答案 4 :(得分:0)
这里有一篇很好的文章解释了界面的概念以及为什么要使用它以及如何在PHP中声明抽象类。尽管它没有区分何时使用这两个概念。
Understanding and Applying (Interfaces) Polymorphism in PHP
答案 5 :(得分:0)
当你需要某些功能时 - 使用interface.but如果你想要一些可选功能 - 使用抽象类。例如,如果isi(印度标准协会)制定了具有功能的计算机监视器标准(它应该具有) - 显示器,电源按钮,对比度设置器。如果所有3个功能都是强制性的,那么使用接口,它绑定监视器制造商公司以实现所有3个功能。如果any是可选的,那么使用抽象类。