Java 接口和抽象类之间的区别是什么?

Java 接口和抽象类之间的区别是什么?,java,Java,可能重复: 我不太清楚两者的区别 谢谢它们非常相似,但有一些重要的技术差异: 抽象类允许您为某些方法提供默认实现,但接口不允许您提供任何实现 可以实现多个接口,但只能从一个抽象类继承 这些差异会影响两种技术的使用方式: 您应该使用接口来定义合同 抽象类对于重用代码非常有用。。。但是请注意,这不是重用代码的唯一方法。您还应该考虑其他方法,例如包容。 接口不允许定义任何成员方法,而抽象类允许定义部分或全部。然而,一个类只能扩展一个类(抽象或非抽象),但可以实现任意多个接口。我喜欢将接口视为契

可能重复:

我不太清楚两者的区别


谢谢

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

  • 抽象类允许您为某些方法提供默认实现,但接口不允许您提供任何实现
  • 可以实现多个接口,但只能从一个抽象类继承
这些差异会影响两种技术的使用方式:

  • 您应该使用接口来定义合同
  • 抽象类对于重用代码非常有用。。。但是请注意,这不是重用代码的唯一方法。您还应该考虑其他方法,例如包容。
      接口不允许定义任何成员方法,而抽象类允许定义部分或全部。然而,一个类只能扩展一个类(抽象或非抽象),但可以实现任意多个接口。

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

      关于这方面有很多帖子:~ Almond Joys有坚果,Mounds没有。~除了用抽象类替换“Almond Joys”,用接口替换“Mounds”,用一些具体方法替换“坚果”。