Interfaces are useful for the following:

* Capturing similarities among unrelated classes without artificially forcing a class relationship.

* The purpose of an interface is to define a contract. A contract that can have multiple implementations in the form of concrete classes.

* Declaring methods that one or more classes are expected to implement.

* Revealing an object's programming interface without revealing its class.


* Modeling multiple inheritance, a feature of some object-oriented languages that allows a class to have more than one super class