Head First C# Code: Chapter 7, Interfaces and Abstract Classes
Actions speak louder than words.
Sometimes you need to group your objects together based on the things they can do rather than the classes they inherit from. That's where interfaces come in—they let you work with any class that can do the job. But with great power comes great responsibility, and any class that implements an interface must promise to fulfill all of its obligations... or the compiler will break their kneecaps, see?