现在,我们知道Java 8在接口中引入了默认和静态方法。
接口最初是在Java中引入的,以避免发生在钻石问题中的多重继承中的C++。
但是随着Java 8接口中默认方法的引入,Java现在也引入了菱形问题,这在以前的版本中得到了避免。
不需要强制重写默认方法。
但是,当使用接口发生菱形问题时,实现这些接口的类必须覆盖默认方法。
现在,我有三个问题在我的脑海里:
有什么好的解释或解释的链接吗?
PS我没有在互联网上找到任何关于这方面的好文章的链接。
他们说的是抽象类给了你更多的具体性。
与之一样,抽象类可以有构造函数,但是接口不能。
因此,我再次想知道,如果抽象类更具体,并且可以有构造函数,
无论如何,Java已经引入了钻石问题,为什么我们现在应该有接口呢?抽象类不足以作为多重继承的独立工具吗?
发布于 2014-06-23 12:01:58
不,它没有重新引入菱形问题,因为接口仍然不能有任何状态,而且默认方法可能不是最终的。
因此,当您选择实现两个接口时,仍然可以通过选择一个提供的默认实现,或者通过提供自己的实现来实现默认方法。但是,您不会遇到从两个接口继承冲突状态,或者继承两个不同的最终方法而无法解决冲突的问题。
因此,以下是你的问题的答案:
发布于 2014-06-23 12:05:59
发布于 2015-06-25 12:03:31
在这里可以看到更多https://docs.oracle.com/javase/tutorial/java/IandI/nogrow.html
https://stackoverflow.com/questions/24365025
复制相似问题