在java中,Object類是所有類的超類。假設,如果我從A繼承B類,即A→B,那麼它是不是像多重繼承?每個類都繼承Object類
Object->A \
B
Object/
Java中不支持多繼承,對吧? 那麼這怎麼可能?那會不會產生鑽石依賴問題?
道歉,如果問題太幼稚了。
在java中,Object類是所有類的超類。假設,如果我從A繼承B類,即A→B,那麼它是不是像多重繼承?每個類都繼承Object類
Object->A \
B
Object/
Java中不支持多繼承,對吧? 那麼這怎麼可能?那會不會產生鑽石依賴問題?
道歉,如果問題太幼稚了。
在[J] ava,
Object
class是所有類的超類。
您對此聲明的理解不正確。 Object
是任何類的層次結構的根,但它是而不是直接 所有類的超類。實際上,Object
只是直接從超類中直接派生出來的類,這些類明確從Object
派生,或者沒有明確地列出另一個超類。否則,它位於層次鏈上端。所以,每個班級(除了Object
)都有一個且只有一個直接超級班,並且該超級班要麼是Object
要麼是其他班級,但是如果您按照班級的繼承鏈工作,最終你會達到Object
(這就是我們的意思是Object
是每個班的超班)。
因此,假設,如果我繼承
B
類從A
,即A
- >B
,則它不喜歡多重繼承?
然後,在這種情況下,層次是B
從Object
A
導出導出。層次結構是而不是A
派生自Object
和B
派生自A
和Object
。但是,Object
是B
的層次結構的根,因爲它是任何類的層次結構的根。
Java中不支持多繼承,對吧?
正確。
那麼這怎麼可能?
你的問題是基於錯誤的理解。再次,Object
是不是的直接超級類的每個類。多繼承意味着不止一個直接超類,並且這在Java中是嚴格禁止的,但是對於每個類而言,Object
是超類(但不一定是直接超類)。
:有些人還使用術語「直接」作爲任何類的直接超類。 Java文檔使用「直接」,所以我們將在這裏使用該術語。
這個圖像是錯誤的。 B類繼承自繼承自Object的A.不涉及多重繼承。
NOP,是傳遞屬性
B extends A extends Object
只有單繼承涉及。
它可能會混淆你引起
(B是A)(A是一個對象),那麼(B是一個對象)。
因此,B是一個對象,而是一個對象,因爲A是一個對象。假設A不是對象,那麼B不會成爲對象。
Object
不是所有其他類的直接超類;這是他們的最終祖先類。這是你正在尋找的圖片。
Object
/
A
/
B
正如你所看到的,這是一棵樹,沒有鑽石問題可以發生在一棵樹上。