Каковы причины возникновния интерфейсов в c#?
en.wikipedia.org/wiki/Class_%28computer_programmin...
Это должно помочь понять.
И все ,что можно сделать с интерфейсом можно сделать и с абстрактным классом ?
- неправда. Класс не может унаследовать несколько абстрактных классов, но реализовывать множество интерфейсов - может. Точнее может унаследовать иерархию абстрактных классов, но не сразу несколько одновременно.
Так же мы можем сделать несколько реализаций интерфейса. Каждая реализация будет содержать свою логику, а потом там, где нам нужны будут методы из интерфейса - подставляем нужную реализацию для конкретной задачи.
Особенно это становится понятным при использовании внедрения зависимостей.