簡體   English   中英

默認情況下,任何類都擴展Object類。 這不是說Java支持多重繼承嗎?

[英]By default any class extends Object class. Doesn't it mean java supports multiple inheritance?

眾所周知,在Java中我們只能擴展“ ONE”類。

但是為了理解:

  1. 任何Java類都隱式擴展了java.lang.Object
  2. 如果類A擴展了類B,則類A不會隱式擴展類B和java.lang.Object嗎?

在這種情況下,默認情況下我們將擴展兩個類。

如果Java不支持多重繼承,為什么允許?

不,Java阻止一個類直接擴展多個超類。 A類可以擴展B類,而B類可以擴展C類。這仍然是單一繼承。 所有這些類都形成一棵樹,其根是Object類,並且每個類(Object除外)都具有一個直接的超類(或父類),即Object或其他類。

那將是一個多層次的繼承 您誤會了多級到多級。

A->B->C //This is multilevel inheritance which you are talking about

多重繼承就像(在Java中是不可能的)

     A
   |   |
   B   C

Java不支持使任何模棱兩可的情況消失的多重繼承。 但是認真實現的實現關鍵字確實會帶來多重繼承的感覺

結論:

A類可以擴展B類,而B類可以擴展C類。這仍然是單一繼承。 所有類都形成一棵樹,其中根是Object類,並且每個類(Object除外)都只有一個直接的超類(或父類)

每當類A擴展類B時,類A不再擴展Java.lang.Object,但是:由於每個類都擴展了Java.lang.Object,如您之前所說,類B將擴展Java.lang.Object,因此類A是擴展Java.lang.Object。仍然是該特定類的子類。

“默認情況下,隱式擴展對象”意味着如果您在類聲明中沒有看到extend關鍵字,則它“無形但直接”擴展了Object。 如果看到extends關鍵字,則該類不會直接擴展Object,而是會在extends子句中提到的類。 現在您必須遍歷該層次結構,並在某一時刻找到一個沒有“擴展”的父類,然后隱式繼承再次出現。

層次結構中的所有類都可傳遞地擴展Object,但只有根直接進行擴展。 可傳遞的,因為所有子類都繼承其父級的所有特征,包括其父級類和已實現的接口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM