2012-02-08 73 views
1

我們說java遵循單一繼承模型,即Java類最多隻能擴展一個類。然後說每個java類都是從Object類繼承的。Java語言中的繼承

假設有兩個類A和B.A和B都從Object擴展而來。現在假設A擴展B.這是不是意味着A具有多重繼承(A從B和Class對象繼承)?

+0

總之沒有,在單繼承'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

回答

9

看傳遞繼承之間的差(C直接從乙繼承和傳遞地從A):

enter image description here

和多重繼承(C從A和B都繼承):

enter image description here

一切都只是添加上,除了具有相同簽名,被覆蓋的方法。即使是使用相同名稱聲明的變量也會添加,它們只是被稱爲「隱藏」,但仍然可以使用cast進行訪問,或者如果它是直接父級,則可以使用super關鍵字。

3

你可以有一個繼承鏈,這不是多重繼承。 你不能從多個類同時繼承的類。

禁止由語言:

class A extends B, C 
{} 
1

一個Java類只能直接繼承一個類。在這種情況下,A不直接繼承自Object,僅從A繼承。

你單從詞彙的角度問,或者是有一些行爲你感興趣的?

1

對象A延伸,其延伸對象對象B。這不是多重繼承,它的層次

2

多重繼承(在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 
1

在Java中,每個類可以直接一個父類延伸。因此,要麼B從對象延伸,並且A從B延伸,xor A和B都從對象延伸。

你假設都在同一時間是真實的 - 這是不可能在Java中。

若B從對象延伸,並且從B擴展,那麼是的,確實從Object繼承,但仍有每類是單親爲每:

class Object 
| 
+-- class B 
     | 
     +-- class A 

換句話說,爪哇不支持多重繼承。

0

的Java不會讓你延長超過1個超一流的。但是,一個類可以實現多個接口。你可以創建一個接口和抽象類的結構,讓你可以擴展超過1個類。祝你好運!

1

多重繼承的主要問題是模糊性,當兩個類定義相同的方法,並且正在重寫和diamond problem。 Java不會因此而受到影響,它只允許覆蓋一個類。這顯然是指直接覆蓋,並不涉及繼承的層次結構。這種繼承(A overring B,B overriding等)不受任何問題的影響。

4
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. 

aa

在你的問題 A directly inherit BObject class

由B繼承不是A ..This被稱爲傳遞繼承