【发布时间】:2012-03-25 14:14:14
【问题描述】:
接口是否解决了deadly diamond of death 问题?
我不这么认为,例如:
// A class implementing two interfaces Interface1 and Interface2.
// Interface1 has int x=10 and Interface2 has int x = 20
public class MultipleInterface implements Interface1, Interface2{
public void getX(){
System.out.println(x);
}
}
这里我们得到一个模棱两可的x。
虽然接口是解决方法歧义的好方法,但我猜它们在变量的情况下会失败?
我说的对吗?如果我遗漏了什么,请赐教。
【问题讨论】:
-
Java 总是有菱形,因为 Java 从第一天起就有多个 types 继承(接口 B 和 C 扩展 A,然后类 D 实现 B 和 C)。但这些钻石始终属于非致命品种。 Java 8 增加了 behavior 的多重继承,但这又不是致命的,因为它不可能继承同一方法的两个不同实现。
标签: java interface multiple-inheritance