Why do we need interfaces in Java? [closed]

In Java to implement multiple inheritance we use interfaces. Is it the only use of interfaces? If yes, what is the main use of interface in Java? Why do we need interfaces in Java?

55
задан Nathan2055 27 July 2013 в 16:41
поделиться

3 ответа

Они нужны вам, чтобы вы могли вводить свои объекты вне иерархии.

Например, сравниваемые объекты могут находиться практически в любом месте иерархии объектов - им не обязательно иметь общего предка, который можно сравнивать. String s можно сравнить, Integer s можно сравнить, вы даже можете создать свои собственные Frame s, которые можно будет сравнивать (скажем, кадр "меньше "чем другой кадр, если он больше на переднем плане, т. е. если он будет перекрывать другой кадр). Таким образом, если вы хотите сослаться на объект, который можно сравнивать, вам придется объявить переменную с самым общим предком - в данном случае Object . Это слишком общий вариант, потому что тогда он также может получать несопоставимые значения (и выдает ошибки при попытке их сравнения).

Таким образом, интерфейс Comparable : он выбирает все классы, которые реализуют функцию сравнения в иерархии подкласса-суперкласса.

5
ответ дан 7 November 2019 в 07:21
поделиться

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

47
ответ дан 7 November 2019 в 07:21
поделиться

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

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

Это позволяет нам заменять реализации другими (очень полезно для тестирования или изменения вариантов использования) без изменения скомпилированного кода.

17
ответ дан 7 November 2019 в 07:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: