Interfaces are the third pillar of OOP programming. Interfaces give you a way to implements certain functionality without knowing how or what do exactly. Think of it as a high level blueprint on how you want the program to run. Just remember that if you inherit from an interface you have to implement every method, class, data type, etc.., defined in the interface. Also the reverse is true that if you try and implement functionality not defined in the interface you will run into compiler errors.
Click HERE for the complete program source code.