Interfaces are generally used for polymorphying. In other words if you have a set core of functionality that you want to impose on multiple objects then you would set the rules for the functionality as a required interface any object wanting to use the functionality must implement. An object that implements an interface can be cast to that interface type and passed into any function that accepts that interface type. Well anyway that all sounds confusing. Interfaces work like inheritance only the object must provide its own implementation.

A .NET example is IList. Any class that implements IList or one of its derived/related interfaces (IListSource, IBindingList...) can be bound to a datagrid. That means that IList contains all the properties and methods that the DataGrid needs to display it and work with it properly. Any object that wants to work with the DataGrid needs to met those requirements or Implement the Interface.

Nevermind I'm not explaining this very well.