[英]Java: Pass actual <T extends Event> class. (Generics Problems)
[英]By default any class extends Object class. Doesn't it mean java supports multiple inheritance?
眾所周知,在Java中我們只能擴展“ ONE”類。
但是為了理解:
在這種情況下,默認情況下我們將擴展兩個類。
如果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.