2014-11-06 2 views
-1

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

Как я понимаю, интерфейсы на Java имеют только объявления методов, но не могут иметь реализации методов. Но если мы посмотрим на Java API, существует множество интерфейсов, которые имеют методы реализации. Я понимаю, что это может быть связано с внутренними классами.

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

Например, интерфейс NodeList, он «обеспечивает абстракцию упорядоченного набора узлов, не определяя или не ограничивая реализацию этой коллекции». Вы можете посмотреть исходный код, и все, что вы можете найти, это просто комментарии. У методов этого интерфейса есть встроенная реализация?

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

+7

Не могли бы вы привести пример интерфейса Java, который имеет функциональные методы? – thatidiotguy

+0

Абстрактные классы? –

+1

Вы ищете Java 8? –

ответ

2

NodeList на самом деле имеет много реализаций: https://xerces.apache.org/xerces-j/apiDocs/org/w3c/dom/class-use/NodeList.html

Я думаю, что в вашем коде, где вы извлекаете NodeList, если вы звоните .getClass() ToString() на это, вы обнаружите, что вы. касающийся одной из реализаций, перечисленных в ссылке, которую я предоставил

+0

Спасибо. Вы правы - оба метода интерфейса NodeList реализованы org.apache.xerces.dom.ParentNode. – aime

Смежные вопросы