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