Понимание переопределяющего метода интерфейса в подчиненном интерфейсе - PullRequest
1 голос
/ 17 марта 2020

Я наткнулся на Collection интерфейс, который объявляет add() метод следующим образом:

boolean add(E e);

Затем я наткнулся на Set интерфейс, который расширяет Collection, который объявляет add() метод с такой же вышеуказанной сигнатурой.

Поскольку сигнатуры одинаковы, я полагаю, Set является переопределяющим методом в Collection. Единственное отличие, которое я могу заметить, в комментариях. Collection говорит:

Гарантирует, что эта коллекция содержит указанный элемент.

Set говорит:

Добавляет указанный элемент к этому набору, если он еще не существует.

Поэтому я считаю, что технически мы можем опустить объявление add из Set, и все же вся структура коллекций Java будет работать без любая проблема, но она существует просто потому, что в Set, add() имеет значение, отличное от значения в Collection. Q1. Так ли это? Или что-то еще достигается с переопределением add() в Set?

Q2. Это обычный шаблон использования в рамках? Следует ли какая-либо другая иерархия интерфейса тому же самому?

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

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