在抽象类中,我们可以将所有方法都抽象化,以便它可以像接口一样工作,那么为什么要使用接口呢?我可以提出的原因之一是我们可以实现多个接口而不是扩展多个类。是否涉及任何设计或性能相关的事情?
答案 0 :(得分:2)
你已经得到了答案。使用接口我们可以强制执行多种类型的行为,因为使用类不适合您。例如,您可以将类强制为IComparable以及INumerable,但是如果您想要使用类来实现它是不可能的。
答案 1 :(得分:1)
您已经确定了接口允许抽象类不允许的一件事。一个类不能扩展多个抽象类。
是否涉及任何与设计或性能相关的事情?
没有性能差异。
你可能会争辩说抽象类(事实上,所有类)的单一继承限制使得这个“设计事物”。当然,它会严重限制你在OO设计中使用多态。
(你也可以争辩说,当你没有接口时,你不能遵循“编程到界面”的格言。但是,这是一个弱论点......一个术语狡辩。)
答案 2 :(得分:0)
设计方面,首选指南是使用Interface
代码行为/合同/功能定义(请参阅List
接口)并使用Abstract
类,您可以使用某些可重用的代码(通过继承)方法实现。
虽然可以使用所有abstract
方法,但在这种情况下,首选Interface
。