When you extend a class, you inherit its entire overall interface, including any interfaces it implements or classes it derives from. So any class extending DoIt
automatically implements IDo
, by the very nature of the fact it's extending a class that implements it. You can put the implements
clause on the declaration, but it doesn't have any further effect on the class. There can be reasons to do it, though, as addressed in the answers to this question: It documents that you specifically intend that class to implement the interface, and means that if the superclass is modified to no longer include the implements
clause, the subclass either breaks (because it's missing something the interface requires) or keeps its original contract.