Interfaces make it possible to work on huge projects, when your less interested in how another part of a big code works, but you need to know how to use it.
An interface contains only the signatures of methods, delegates or events. The implementation of the methods is done in the class that implements the interface
Here is my example: interface Vehicle { void StartEngine(); } class HondaCivic implements Vehicle{ function StartEngine(){ implementation .... } } class ToyotaCorolla implements Vehicle{ function StartEngine(){ implementation .... } } void Main(){ { function GoToWork(Vehicle myCar) { myCar.StartEngine(); } } Look at the example above. Without the Vehicle interface you will need one GoToWork function with HondaCivic type parameter, and one with ToyotaCorolla type parameter. But if both HondaCivic and ToyotaCollora implement Vehicle interface, than GoToWork can takes in a Vehicle type parameter.