2016-04-07 3 views
-1

Это ошибка?Концепция наследования концепции Java?

Проблема: У меня есть 4 класса V, A, B, C, D.

Класс E необходимость расширения V, A, B, D, но как?

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», чтобы расширить их все. –

+0

Каждый класс наследуется только от одного родителя. Просто потому, что у них тоже есть собственный родитель, это не влияет. –

+0

То, что вы описываете, не является множественным наследованием и совершенно правильно. Множественное наследование - это когда класс расширяет mutliple другие, обычно не связанные и часто несовместимые классы. – apokryfos

ответ

0

E ли действительно продлить V, A, B, D, учитывая ваш пример кода.

Я не уверен в вашем вопросе, вы подразумеваете, что вы предпочли бы, чтобы это не было длинной цепочкой наследования?

Вы можете рассмотреть возможность применения V, A, B, D как интерфейсы. Тогда вы могли бы сделать:

class E implements V, A, B, D

0

В вашем примере, E является дочерним D и транзитивно также потомок B, A и v. Это совершенно законно и поддерживается на Java. Но это не множественное наследование.

Тот факт, что Java не поддерживает множественное наследование для классов, касается другой ситуации: вы не можете напрямую расширить несколько классов, например. следующее: не поддерживается на Java: class E extends D, B, или class Child extends ParentA, ParentB.

Java позволяет реализации нескольких интерфейсов хотя и допускает множественное наследование интерфейсов, то есть следующий будет позволено:

interface ParentA ... 

interface ParentB ... 

interface Child extends ParentA, ParentB ...