javaは単一の継承モデルに従うと言います。つまり、Javaクラスは最大で1つのクラスのみを拡張できます。すべてのJavaクラスがObjectクラスから継承されているとします。Java言語における継承
クラスAとクラスBの2つがあるとします.AとBの両方がObjectから拡張されています。ここで、AがBを拡張すると仮定します。Aが複数の継承を持つことを意味しません(AはBとClassオブジェクトの両方を継承します)。
javaは単一の継承モデルに従うと言います。つまり、Javaクラスは最大で1つのクラスのみを拡張できます。すべてのJavaクラスがObjectクラスから継承されているとします。Java言語における継承
クラスAとクラスBの2つがあるとします.AとBの両方がObjectから拡張されています。ここで、AがBを拡張すると仮定します。Aが複数の継承を持つことを意味しません(AはBとClassオブジェクトの両方を継承します)。
ルック(CがBから直接継承し推移Aから):
と多重継承(AとBの両方から継承C):
オーバーライドされた同じシグネチャのメソッドを除いて、すべてが追加されました。同じ名前で宣言された変数も追加されていますが、それらは単に「隠されている」と言われていますが、キャストを使用してアクセスできます。あなたの質問A directly inherit B
とObject class
で
継承チェーンを使用できますが、これは多重継承ではありません。 で複数のクラスから継承するクラスを作成することはできません。言語によって禁止
:
class A extends B, C
{}
A Javaクラスは直接 1つのクラスから継承することができます。この場合、A
はであり、直接はObject
から継承しません。A
からのみです。
用語の観点からのみ尋ねているのですか、またはの動作に興味がありますか?
オブジェクトAは、オブジェクトを拡張するオブジェクトBを拡張します。これは、多重継承はありません、それは多重継承
階層です:(Javaのサポートされていません)
クラスA
クラスBは、オブジェクト
クラスCはA、B
を拡張する拡張オブジェクトを拡張しますObject
/\
/\
/ \
A B (Not supported by Java)
\ /
\ /
\/
C
マルチレベル/推移的継承:(J AVA)
クラスB、Javaで
Object
|
|
|
B (Supported by Java)
|
|
|
A
クラスA extedns Bオブジェクト延び、各クラスが直接 親クラスからのみ延びることができます。したがって、BはObjectから拡張し、AはBから拡張します。xor AとBの両方がObjectから拡張されています。
あなたは、両方が同時に真であると仮定しています。これはJavaでは不可能です。
Bは、Objectから延びており、AがBから延びている場合は、[はい、AはObjectから継承んが、一人ひとりのクラスへの単一の親がまだある:つまり
class Object
|
+-- class B
|
+-- class A
、ジャワ多重継承をサポートしていません。
Javaでは1つ以上のスーパークラスを拡張することはできません。ただし、クラスは複数のインターフェイスを実装できます。インターフェイスの構造と抽象クラスを作成すると、1つ以上のクラスを拡張することができます。がんばろう!
複数継承の主な問題は、2つのクラスが同じメソッドを定義し、オーバーライドされており、diamond problemである場合のあいまいさです。 Javaはこれに悩まされず、単一のクラスだけをオーバーライドすることができます。これは明らかに直接オーバーライドを指し、継承の階層を処理しません。この種の継承(オーバーライドB、Bオーバーライドなど)は、問題の影響を受けません。推移の継承との間の差で
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
..ThisでBによって継承されますと呼ばれる推移継承
要するになし、単一継承に '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) –