如果我有4种不同的Java类型(称为A B C D
),A
是B
的子类型,A
是C
的子类型并且B
是D
的子类型,C
是[{1}}的子类型,这是合法的吗?那里有什么例子吗?
绘制图表:
D
所以D是超类型。 谢谢!
答案 0 :(得分:6)
这与继承不合法,因为Java作为一种语言不支持多重继承。
但是,您可以通过实现多个接口来实现这一点,这与多重继承不同。
所以是的,这是可能的,并且你可以这样做,因为你可以检查某些东西是否是一个接口的实例,但这与一个类类型不一样,你的图表看起来有点不同于你画了。
答案 1 :(得分:1)
在java中,只有当D,C和B都是接口时,才会出现这种情况。这是合法的,也会奏效。示例 - 为实例Comparable
实现两个接口的任何类。和Hashable
。对象是这两个接口的共同祖先(虽然不是直接的)。
答案 2 :(得分:1)
这是合法的吗?
烨。 Java不支持使用类进行多重继承。只有多级。
因此,A
不能同时从B
和C
继承。
请参阅:Multiple Inheritance in java和How do Java Interfaces simulate multiple inheritance?
答案 3 :(得分:0)
Java不支持多重继承。
为什么不呢?你可以看看here。您显示的继承层次结构是典型的钻石问题。