Интерфейс должен рассматриваться только как контракт в большинстве случаев.Сущности, которые вы определили, должны рассматриваться как класс (как объект, созданный из него).
Интерфейсы обеспечивают своего рода гибкость в реализации.
Существует несколько других причин, по которым вы могли бывы хотите использовать интерфейсы вместо наследования классов:
Интерфейсы лучше подходят для ситуаций, когда вашим приложениям требуется много, возможно, не связанных типов объектов для обеспечения определенной функциональности.
Интерфейсы более гибкие, чем базовые классы, посколькуВы можете определить одну реализацию, которая может реализовать несколько интерфейсов.
Интерфейсы лучше в ситуациях, когда вам не нужно наследовать реализацию от базового класса.
Интерфейсы полезны в тех случаях, когда вы не можете использовать наследование классов.Например, структуры не могут наследоваться от классов, но они могут реализовывать интерфейсы.