В контексте Java 8 зачем реализовывать Runnable Interface вместо расширения класса Thread?

Я уже знаю, что мы предпочитаем реализацию интерфейса Runnable расширению потока, потому что он обеспечивает гибкость нашему классу, мы можем расширить какой-то другой класс в будущем. Это невозможно при расширении класса Thread, поскольку Java не поддерживает множественное наследование (до Java 8). Теперь, когда выпущена Java 8, мы можем использовать множественное наследование, поэтому оба подхода являются гибкими. Мой вопрос: каковы преимущества и недостатки реализации интерфейса Runnable по сравнению с расширением класса Thread в контексте Java 8? Заранее большое спасибо :) .


person Arjun Thakur    schedule 18.04.2014    source источник


Ответы (1)


Вы также не можете расширить несколько классов в Java 8. В документе java четко написано, что

Одна из причин, по которой язык программирования Java не позволяет расширять более одного класса, заключается в том, чтобы избежать проблем множественного наследования состояния, т. Е. Возможности наследовать поля от нескольких классов.

а также

Язык программирования Java поддерживает множественное наследование типов, то есть способность класса реализовывать более одного интерфейса. Объект может иметь несколько типов: тип своего собственного класса и типы всех интерфейсов, реализуемых этим классом.

Реализация нескольких интерфейсов, содержащих одни и те же методы по умолчанию, является формой множественного наследования. и снова из того же javadoc ...

Как и в случае множественного наследования реализации, класс может наследовать различные реализации метода, определенного (по умолчанию или статическим) в интерфейсах, которые он расширяет. В этом случае компилятор или пользователь должны решить, какой из них использовать.

Таким образом, в любой версии java вы не можете расширить более одного класса, Таким образом, ответ на ваш вопрос остается неизменным.

person Not a bug    schedule 18.04.2014
comment
Да, я пропустил это. Я хочу проголосовать за этот ответ, но у меня нет репутации. большое спасибо. - person Arjun Thakur; 18.04.2014