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