Implementing an interface is not inheritance. Inheritance says "I want EVERYTHING this class has, then i'm going to add to it and change some of it. The sub-class, without doing anything other than saying "extends CLASS" is a fully functional class (without getting into abstract classes). You're saying "I want something that does everything class A does, except i need to change this one little bit. Implementing an interface is doing nothing more than agreeing to a contract. An interface defines one or more methods that a class MUST, well, implement. When you type "implements INTERFACE", all you've done is signed the dotted line saying "I promise that somehow, my class will have these methods." Then you have to actually WRITE those methods to adhere to the contract.

There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors