在Java语言中,抽象类和接口之间曾经有一个微妙但重要的区别:default implementations。抽象类可以拥有它们,接口则不能。然而,Java 8引入了接口的默认实现,这意味着这不再是接口和抽象类之间的关键区别。
那么是什么呢?
据我所知,唯一的区别(可能除了一些幕后的效率问题)是抽象类遵循传统的Java单继承,而接口可以有多继承(如果你愿意,也可以有多实现)。这就引出了另一个问题--
新的Java8接口如何避免diamond Problem
发布于 2014-03-23 21:35:29
现在接口可以包含可执行代码,很多抽象类的用例都被接口接管了。但是抽象类仍然可以有成员变量,而接口不能。
通过简单地不允许类实现两个接口来避免菱形问题,当两个接口都为具有相同签名的相同方法提供默认实现时。
https://stackoverflow.com/questions/22591499
复制相似问题