首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java 8中的抽象类和接口有什么不同?

Java 8中的抽象类和接口有什么不同?
EN

Stack Overflow用户
提问于 2014-03-23 21:25:19
回答 1查看 19.4K关注 0票数 67

在Java语言中,抽象类和接口之间曾经有一个微妙但重要的区别:default implementations。抽象类可以拥有它们,接口则不能。然而,Java 8引入了接口的默认实现,这意味着这不再是接口和抽象类之间的关键区别。

那么是什么呢?

据我所知,唯一的区别(可能除了一些幕后的效率问题)是抽象类遵循传统的Java单继承,而接口可以有多继承(如果你愿意,也可以有多实现)。这就引出了另一个问题--

新的Java8接口如何避免diamond Problem

EN

回答 1

Stack Overflow用户

发布于 2014-03-23 21:35:29

现在接口可以包含可执行代码,很多抽象类的用例都被接口接管了。但是抽象类仍然可以有成员变量,而接口不能。

通过简单地不允许类实现两个接口来避免菱形问题,当两个接口都为具有相同签名的相同方法提供默认实现时。

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

https://stackoverflow.com/questions/22591499

复制
相关文章

相似问题

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