首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java 8中接口和抽象类的基本区别

Java 8中接口和抽象类的基本区别
EN

Stack Overflow用户
提问于 2014-04-04 06:55:35
回答 2查看 1.7K关注 0票数 4

考虑到接口现在可以为它提供的方法提供一个实现,我不能正确地理清接口和抽象类之间的区别。有谁知道如何正确地解释这种差异吗?

我还被告知,与抽象类相比,接口的重量要轻一些,性能更好。有人能确认一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-04 06:59:54

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

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

票数 17
EN

Stack Overflow用户

发布于 2014-04-04 07:05:22

  1. 类只能从另一个类继承,但可以实现多个接口。
  2. 接口可能没有任何字段,期望定义常量,而抽象类可以
  3. 抽象类可以定义构造函数,而接口不能。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22855670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档