2016-04-07 16 views
-1

これは間違いですか?Javaの概念の継承ハック?

問題:私は4クラスVABCDを持っています。

クラスEVABDが、どのように拡張する必要がありますか?

Class A extends V{} 
Class B extends A{} // this class extends A and V 
Class D extends B{} // this class extends A , V and B 

Class E extends D{} // Multiples 

これは可能ですが正しいですか?私は、Javaには多重継承がないことを知っています。

+0

はい、 'E'は、これらのクラスのすべてを拡張しません。それらをすべて拡張するために 'E'が必要な場合、設計上の問題があることを示唆することはできます。 –

+0

各クラスは1つの親からのみ継承します。彼らが自分の親を持っているだけなので、これには影響しません。 –

+0

説明していることは多重継承ではなく、完全に正しいです。多重継承とは、あるクラスが他の多くの、通常は無関係で、しばしば互換性のないクラスを継承する場合です。 – apokryfos

答えて

0

Eは確かにあなたのコードサンプル与えられ、VABDを延長ありません。

私はあなたの質問のポイントがわかりません、あなたはそれが長い継承の連鎖ではないことを望んでいることを示唆していますか?

インターフェイスとしてV,ABDを実装することを検討できます。 はその後、あなたができる:あなたの例では

class E implements V, A, B, D

0

を、Eも推移BAvの子孫Dの子です。これは完全に合法で、Javaでサポートされています。しかし、これはではなく、の多重継承です。

Javaがクラスの複数継承をサポートしていないという事実は、まったく別の状況です。は直接にはできません。 Javaでサポートされているであり、class E extends D, Bまたはclass Child extends ParentA, ParentBです。

Javaはいえ実装する複数のインタフェースをを可能にし、すなわち、以下が許可される、インターフェイスの多重継承を許容する:

interface ParentA ... 

interface ParentB ... 

interface Child extends ParentA, ParentB ...