The interface has no implementation - this is a contract. This allows you to completely unleash.
I will move from an interface to an abstract (base) class if I want to provide some general implementation, while forcefully inheriting a class of the class of the inherited class to provide some implementation specific to this class. This provides less isolation.
Also keep in mind that many languages, such as C # (and .net, such as VB.net, etc.), as well as Java, do not allow multiple inheritance, so interfaces become a way to allow a class to have many behaviors.
bryanmac
source share