An “interface” embodies the concept of a contract between clients and an implementation. An “abstract class” contains code that you want to share between multiple implementations of an interface . While the interface is implied in an abstract classes methods, sometimes it is useful to specify the contract in isolation.12 Eki 2012