Closeable расширяет AutoCloseable - PullRequest
0 голосов
/ 04 июня 2018

Я недавно просматривал файл src.zip в jdk 1.8 и обнаружил кое-что довольно странное.

public interface Closeable extends AutoCloseable 

, а поскольку AutoCloseable является interface также, как в java разрешено продлевать так?

Когда я пробовал его с любыми другими интерфейсами, я постоянно получал сообщение об ошибке:

Тип Runnable не может быть суперклассом userDefine Class ;суперкласс должен быть классом.

Итак, почему это несоответствие?или я что-то упустил?Если это так, пожалуйста, объясните мне.

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Когда речь идет об интерфейсах, ключевое слово extends можно рассматривать как implements для классов.

Это добавит возможности расширенного интерфейса к получателю

0 голосов
/ 04 июня 2018

Если вы просто думаете об этом с точки зрения естественного языка, интерфейсы могут расширять другие интерфейсы, потому что они расширяют требования, которые они предъявляют к реализующему классу.Это более конкретные контракты.

Если бы интерфейс использовал ключевое слово implements, чтобы выразить эту идею, это могло бы привести к путанице.«Реализует» означает «обеспечить реализацию», и это не то, что здесь происходит.

Следовательно:

  1. интерфейсы могут расширять интерфейсы
  2. классы могут расширять классы
  3. классы могут реализовывать интерфейсы
0 голосов
/ 04 июня 2018

Интерфейсы extends интерфейсы. Не implements.

При наследовании используется ключевое слово extends, когда класс наследует откласс или интерфейс наследуется от другого интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...