Зачем нам нужны интерфейсы, если он только объявляет сигнатуру метода? - PullRequest
0 голосов
/ 09 апреля 2020

Все методы, объявленные в интерфейсах, являются абстрактными, и мы должны переписать метод с подписью и телом в классе, который реализует интерфейс. Так какой смысл использовать интерфейс?

Ответы [ 2 ]

3 голосов
/ 09 апреля 2020

Обычно интерфейсы считаются контрактами между разработчиками. Под этим я подразумеваю, что вы разрабатываете собственный API для публичного использования. Теперь вы не хотите, чтобы все могли непосредственно видеть ваш исходный код того, как вы реализовали что-то, потому что это весь ваш продукт. Вместо этого вы открываете интерфейс, который показывает другим разработчикам, какие типы параметров и возвращаемые значения следует ожидать, и гарантирует, что ваш код будет выполнять sh цель, для которой он используется, без необходимости раскрывать, как он работает.

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

Определение интерфейса похоже на высказывание: «Я ожидаю, что смогу иметь такие функции, которые я могу вызвать, которые принимают эти параметры и возвращают эти значения, но мне все равно, как вы это делаете»

0 голосов
/ 09 апреля 2020

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

Я думаю, что это делает c (https://docs.oracle.com/javase/tutorial/java/concepts/interface.html) также будет полезно.

Я думаю, что я могу добавить еще один Здесь, скажем, я хочу использовать интерфейс, предоставленный Facebook (или другим приложением, если хотите). Я могу go просмотреть список предоставленных методов, чтобы увидеть, какой из них работает для меня. Это делает вещи проще, чем необходимость go пройти через все детали реализации. Это то, что я думаю @Tarun также сказал в ответе выше.

...