“Interfaces are used
to encode similarities which the classes of various types share, but do not
necessarily constitute a class relationship. For instance, a human and
a parrot can
both whistle; however, it would not make sense to
represent Humans and Parrots as subclasses of
a Whistler class. Rather they would most likely be subclasses
of an Animal class (likely with intermediate classes), but
both would implement the Whistler interface.” [http://en.wikipedia.org/wiki/Java_interface]