How-to-simply...

Choose between an Abstract Class and an Interface in C#

  • 1 Abstract class could have methods with implementation (implementation will be accessible in derived classes)
    Abstract methods have no implementation and must be overriden in derived classes
    Virtual methods could have an implementation, this may be overriden in derived classes
  • 2 Interface has no implementation
    Choose it when multiple objects implements the same functionality differently
  • N Interfaces are typically loose, compared to Abstract classes. You wouldn't want to use interfaces in a situation where you are constantly writing the same code for all of the interface's methods. Use an abstract class and define each method once.

References