Java 8中接口和抽象类之间的根本区别[重复]

Posted

技术标签:

【中文标题】Java 8中接口和抽象类之间的根本区别[重复]【英文标题】:Fundamental difference between interface and abstract class in Java 8 [duplicate] 【发布时间】:2014-05-16 08:18:45 【问题描述】:

考虑到接口现在可以为它提供的方法提供实现,我无法正确解释接口和抽象类之间的区别。有谁知道如何正确解释差异?

我还被告知,与抽象类相比,接口在性能方面更轻量级。有人可以确认吗?

【问题讨论】:

【参考方案1】:

接口仍然不能有任何状态。接口仍然不能有任何最终方法,这意味着任何实现都可以覆盖其所有默认方法。而且接口仍然不能有任何构造函数。

您仍然可以实现多个接口,即使它们具有具有相同签名的默认方法。您不能扩展多个类(抽象或非抽象)。

【讨论】:

谢谢!第一个原因让我很清楚两者之间的区别。 只有接口可以扩展为函数接口,抽象类不能在lambdas中使用。【参考方案2】:
    一个类只能从另一个类继承,但可以实现多个接口 接口可能没有任何字段,需要定义常量,而抽象类可以 抽象类可以定义构造函数,而接口不能

默认方法仅限于输入参数和方法调用。它们本质上是无国籍的。抽象类可能有状态。因此,从设计的角度来看,我建议在需要代码重用时使用抽象类。在我看来,将代码重用减少到包范围是一个很好的设计原则。

接口非常适合对包、库、域或应用程序的概念进行建模和交流。它们不依赖于实现细节并允许随意替换实现。它们支持测试和模块化。

【讨论】:

以上是关于Java 8中接口和抽象类之间的根本区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

接口和抽象类的区别

java类,抽象类,接口之间的区别和联系

接口和抽象类的区别--面试题

java接口与抽象类有啥区别?

接口和抽象之间有啥区别以及依赖注入如何[重复]

Java抽象类与接口的区别