4

如果我有 4 种不同的 Java 类型(称它们为A B C D),并且A是和 的子类型,并且是 的子类型,并且是B的子类型,这合法吗?有没有例子?ACBDCD

绘制图表:

           D
          | |  
        |     |
       B       C
        |     |
          | |
           A

所以 D 是超类型。谢谢!

4

4 回答 4

6

这对于继承是不合法的,因为 Java 作为一种语言不支持多重继承。

但是,您可以通过实现多个接口来做到这一点,这与多重继承不同。

因此,是的,您可以这样做,只要您可以检查某物是否是接口的实例,但这与类类型不同,并且您的图表看起来与您绘制的图表略有不同。

于 2013-02-12T09:14:34.200 回答
1

在 java 中,只有当 D、C 和 B 都是接口时才会出现这种图。这是合法的,并且会起作用。一个例子——例如任何实现两个接口的类Comparable。和Hashable。Object 是这两个接口的共同祖先(尽管不是直接的)。

于 2013-02-12T09:13:34.313 回答
1

这合法吗?

是的。Java 不支持类的多重继承。只有多级。

因此,A不能同时从两者继承Band C

请参阅:Java 中的多重继承Java 接口如何模拟多重继承?

于 2013-02-12T09:13:57.290 回答
0

Java 不支持多重继承。

那么为何不?你可以看看这里。您显示的继承层次结构是典型的菱形问题。

于 2013-02-12T10:44:19.343 回答