2013-02-12 22 views
3

如果我有4種不同的Java類型(叫他們A B C D)和ABA亞型是CB亞型是DC亞型是D一個亞型,是這樣的法律?那裏有沒有例子?亞型的Java

繪製圖:

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

所以d是超類型。 謝謝!

+1

不可以。Java不支持多重繼承,所以'A'不能是'B'和'C'的子類型。 – 2013-02-12 09:14:10

+2

沒有。 Java僅支持單一繼承。這是一件好事:)正確的選擇是使用「接口」。 – paulsm4 2013-02-12 09:14:23

回答

6

這是不合法的繼承與作爲Java作爲一種語言不支持多重繼承。

但是,您可以通過實現多個接口來實現這一點,這與多重繼承不同。

所以是的,這是可能的,你可以做到這一點,只要你可以檢查是否有東西是一個接口的實例,但這不是一個類的類型,你的圖看起來有點不同你畫了。

+1

你是對的:interfaces *是*「與多重繼承不同的東西」。如果OP要求「A」同時是「C」和「B」的子類型,那麼答案是確定的「否」。 – paulsm4 2013-02-12 09:17:24

1

在java中,這樣的圖只有在D,C和B都是接口時纔會發生。這是合法的,並將工作。一個例子 - 實現兩個接口的任何類,例如Comparable。和Hashable。對象是這兩個接口的共同祖先(儘管不是直接的)。

+1

B或C可以是一個類(B實現D,C擴展D,A擴展B實現C) – 2013-02-12 09:23:30

+1

@Andreas true。仍然在他的圖表B和C看起來對稱,這就是爲什麼我沒有提到這種情況。但是,您的評論足夠且絕對正確。 – 2013-02-12 09:25:15

0

Java不支持多重繼承。

爲什麼不呢?你可以看看here。您顯示的繼承層次是典型的鑽石問題。