接口和抽象类之间有什么区别?

时间:2010-11-08 18:49:39

标签: java

  

可能重复:
  Interface vs Abstract Class (general OO)

我对这种差异并不十分清楚。

由于

3 个答案:

答案 0 :(得分:17)

它们非常相似,但存在一些重要的技术差异:

  • 抽象类允许您为某些方法提供默认实现,但接口不允许您提供任何实现。
  • 您可以实现多个接口,但只能从一个抽象类继承。

这些差异会影响两种技术的使用方式:

  • 您应该使用定义合约的界面
  • 抽象类对于重用代码非常有用......但请注意,它不是重用代码的唯一方法。您还应该考虑其他方法,例如收容。

答案 1 :(得分:4)

接口不允许定义任何成员方法,而抽象类允许定义部分或全部。然而,一个类只能扩展一个类(抽象或不抽象),但可以实现任意数量的接口。

答案 2 :(得分:3)

我喜欢将界面视为合约。任何实现接口的类都必须提供有关在调用合同中定义的任何方法时要执行的操作的详细信息。抽象类是一个定义了一组实际行为的类,即不仅仅是稍后要实现的合同,而且该类无法实例化。