Why I should go for Interfaces in C# when I can implement the methods directly

 
Interfaces are contracts that implementers must follow. Abstract classes allow contracts plus shared implementations - something that Interfaces cannot have. Classes can implement and inherit multiple interfaces. Classes can only extend a single abstract class.

Why Interface

  • You don't have default or shared code implementation
  • You want to share data contracts (web services, SOA)
  • You have different implementations for each interface implementer (IDbCommand has SqlCommand and OracleCommand which implement the interface in specific ways)
  • You want to support multiple inheritance.
  •  Allow for multiple methods with the same name between interfaces, because hey, you have no conflicting implementation, just a signature.

Why Abstract

Comments