我們說java遵循單一繼承模型,即Java類最多隻能擴展一個類。然後說每個java類都是從Object類繼承的。Java語言中的繼承
假設有兩個類A和B.A和B都從Object擴展而來。現在假設A擴展B.這是不是意味着A具有多重繼承(A從B和Class對象繼承)?
我們說java遵循單一繼承模型,即Java類最多隻能擴展一個類。然後說每個java類都是從Object類繼承的。Java語言中的繼承
假設有兩個類A和B.A和B都從Object擴展而來。現在假設A擴展B.這是不是意味着A具有多重繼承(A從B和Class對象繼承)?
看傳遞繼承之間的差(C直接從乙繼承和傳遞地從A):
和多重繼承(C從A和B都繼承):
一切都只是添加上,除了具有相同簽名,被覆蓋的方法。即使是使用相同名稱聲明的變量也會添加,它們只是被稱爲「隱藏」,但仍然可以使用cast進行訪問,或者如果它是直接父級,則可以使用super關鍵字。
你可以有一個繼承鏈,這不是多重繼承。 你不能從多個類同時繼承的類。
禁止由語言:
class A extends B, C
{}
一個Java類只能直接繼承一個類。在這種情況下,A
不直接繼承自Object
,僅從A
繼承。
你單從詞彙的角度問,或者是有一些行爲你感興趣的?
對象A延伸,其延伸對象對象B。這不是多重繼承,它的層次
多重繼承(在Java不支持)
A類擴展對象
B類擴展對象
C級擴展A,B
Object
/\
/\
/ \
A B (Not supported by Java)
\ /
\ /
\/
C
多級/傳遞繼承:(用j支持AVA)
B類延伸對象
A類extedns乙
Object
|
|
|
B (Supported by Java)
|
|
|
A
在Java中,每個類可以直接僅從一個父類延伸。因此,要麼B從對象延伸,並且A從B延伸,xor A和B都從對象延伸。
你假設都在同一時間是真實的 - 這是不可能在Java中。
若B從對象延伸,並且從B擴展,那麼是的,確實從Object繼承,但仍有每類是單親爲每:
class Object
|
+-- class B
|
+-- class A
換句話說,爪哇不支持多重繼承。
的Java不會讓你延長超過1個超一流的。但是,一個類可以實現多個接口。你可以創建一個接口和抽象類的結構,讓你可以擴展超過1個類。祝你好運!
多重繼承的主要問題是模糊性,當兩個類定義相同的方法,並且正在重寫和diamond problem。 Java不會因此而受到影響,它只允許覆蓋一個類。這顯然是指直接覆蓋,並不涉及繼承的層次結構。這種繼承(A overring B,B overriding等)不受任何問題的影響。
Excepting Object, which has no superclass, every class has one and |
only one direct superclass (single inheritance). In the absence of any
other explicit superclass, every class is implicitly a subclass of Object.
在你的問題
A directly inherit B
和
Object class
由B繼承不是A
..This被稱爲傳遞繼承
總之沒有,在單繼承'Object'是一個超(父類),它是'B'的超類。多重繼承將是A extends Object,B extends Object,C extends A,B中C有**兩個超類**。閱讀(http://www.informit.com/articles/article.aspx?p=28672&seqNum=12) – 2012-02-08 11:54:15