2012-02-08 13 views
1

javaは単一の継承モデルに従うと言います。つまり、Javaクラスは最大で1つのクラスのみを拡張できます。すべてのJavaクラスがObjectクラスから継承されているとします。Java言語における継承

クラスAとクラスBの2つがあるとします.AとBの両方がObjectから拡張されています。ここで、AがBを拡張すると仮定します。Aが複数の継承を持つことを意味しません(AはBとClassオブジェクトの両方を継承します)。

+0

要するになし、単一継承に 'Object'がスーパークラスであります(親クラス)の 'A'は' B'のスーパークラスです。多重継承は、A extends Object、B extends Object、C extends A、Bで、Cは** 2つのスーパークラス**を持ちます。これを読む(http://www.informit.com/articles/article.aspx?p=28672&seqNum=12) –

答えて

9

ルック(CがBから直接継承し推移Aから):

enter image description here

と多重継承(AとBの両方から継承C):

enter image description here

オーバーライドされた同じシグネチャのメソッドを除いて、すべてが追加されました。同じ名前で宣言された変数も追加されていますが、それらは単に「隠されている」と言われていますが、キャストを使用してアクセスできます。あなたの質問A directly inherit BObject class

3

継承チェーンを使用できますが、これは多重継承ではありません。 で複数のクラスから継承するクラスを作成することはできません。言語によって禁止

class A extends B, C 
{} 
1

A Javaクラスは直接 1つのクラスから継承することができます。この場合、Aであり、直接Objectから継承しません。Aからのみです。

用語の観点からのみ尋ねているのですか、またはの動作に興味がありますか?

1

オブジェクトAは、オブジェクトを拡張するオブジェクトBを拡張します。これは、多重継承はありません、それは多重継承

2

階層です:(Javaのサポートされていません)

クラスA

クラスBは、オブジェクト

クラスCはA、B

を拡張する拡張オブジェクトを拡張します
Object 
    /\ 
/\ 
/ \ 
A  B  (Not supported by Java) 
\ /
    \ /
    \/
    C 

マルチレベル/推移的継承:(J AVA)

クラスB、Javaで

Object 
    | 
    | 
    | 
    B  (Supported by Java) 
    | 
    | 
    | 
    A 
1

クラスA extedns Bオブジェクト延び、各クラスが直接 親クラスからのみ延びることができます。したがって、BはObjectから拡張し、AはBから拡張します。xor AとBの両方がObjectから拡張されています。

あなたは、両方が同時に真であると仮定しています。これはJavaでは不可能です。

Bは、Objectから延びており、AがBから延びている場合は、[はい、AはObjectから継承んが、一人ひとりのクラスへの単一の親がまだある:つまり

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

、ジャワ多重継承をサポートしていません。

0

Javaでは1つ以上のスーパークラスを拡張することはできません。ただし、クラスは複数のインターフェイスを実装できます。インターフェイスの構造と抽象クラスを作成すると、1つ以上のクラスを拡張することができます。がんばろう!

1

複数継承の主な問題は、2つのクラスが同じメソッドを定義し、オーバーライドされており、diamond problemである場合のあいまいさです。 Javaはこれに悩まされず、単一のクラスだけをオーバーライドすることができます。これは明らかに直接オーバーライドを指し、継承の階層を処理しません。この種の継承(オーバーライドB、Bオーバーライドなど)は、問題の影響を受けません。推移の継承との間の差で

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 ..ThisでBによって継承されますと呼ばれる推移継承