Java наследуется от двух классов - PullRequest
2 голосов
/ 23 декабря 2010

Я использую интерфейс в Java, который связывается с PureData.Для этого мои классы должны расширять данный класс MaxObject.При разработке своего класса, представляющего собой кольцевой буфер, я обнаружил, что мне нужно расширить класс Iterator в Java.Поэтому мне нужно расширять два класса одновременно.

Я предполагаю, что единственное решение - создать два разных класса и позволить одному из них быть компонентом другого.Но единственное ли это решение?Это лучший?

Кроме того, всякий раз, когда мне нужно наследовать от двух классов, это из-за плохого дизайна?Есть шаблон проектирования для решения этого класса?

Спасибо

Ответы [ 3 ]

12 голосов
/ 23 декабря 2010

Iterator это не класс, это интерфейс. Таким образом, вы не расширяете его, вы реализуете его. Вы можете реализовать любое количество интерфейсов - единственное ограничение заключается в том, что вы можете расширять только один класс.

В вашем случае:

class MyClass extends MaxObject implements Iterator<Type>
2 голосов
/ 23 декабря 2010

Iterator - это интерфейс. С теоретической точки зрения нет ничего против расширения MaxObject и реализации Iterator.

Из-за недостатка информации я не могу сказать, хорошая ли это идея, но у меня плохое предчувствие.

2 голосов
/ 23 декабря 2010

редактировать: я должен был прочитать ближе, что расширяется. EboMike прав, вам не нужно расширять класс Iterator.

Похоже на DDofD: http://javacodeonline.blogspot.com/2009/08/deadly-diamond-of-death.html

...