Adi*_*ngh 6 java abstract-class interface diamond-problem java-8
现在,我们知道Java 8在接口中引入了默认和静态方法.
接口最初是用Java引入的,以避免在多重继承中C++中出现的菱形问题.
但是随着Java 8中接口中引入默认方法,Java现在也引入了钻石问题,这在以前的版本中已经避免了.
不会强制要求覆盖默认方法.
但是当钻石问题使用接口时,实现这些接口的类必须覆盖默认方法.
所以现在,我脑子里有三个问题:
有任何好的解释或任何解释链接?
PS我没有在互联网上找到任何包含任何好文章的链接.
他们所说的只是一个抽象的课程让你更具体.
就像在,抽象类可以有构造函数,但接口不能.
所以,我想知道,如果抽象类更具体,并且可以有构造函数,
并且无论如何Java引入了钻石问题,为什么我们现在应该有接口?作为多重继承的独立,抽象类不是很好吗?
JB *_*zet 15
不,它没有重新引入钻石问题,因为接口仍然不能有任何状态,默认方法可能不是最终的.
因此,当您选择实现两个接口时,您仍然可以通过选择一个提供的默认实现或提供自己的实现来实现默认方法的所有自由.但是,您永远不会遇到从两个接口继承冲突状态或继承两个不同的最终方法而无法解决冲突的问题.
那么,以下是您的问题的答案:
| 归档时间: |
|
| 查看次数: |
332 次 |
| 最近记录: |