title: Drawbacks of explicitly implementing not used interface
body: <p>I came up with this question writing specific code, but I'll try to keep the question as generic as possible.</p>
  
  <p>Other similar question refer to C# which seems to have some language specific handling for this and below code is Java, but again let's try to keep it generic.</p>
  
  <p>Let's say I have class A which implements interface I.</p>
  
  <p>This is useful to me cause I can implement methods that use A only as a I type and abstract the implementation.</p>
  
  <p><strike>Let's now say, I have class B which implements all methods in interface I, but it's never referred to as only I.</strike>
  Let's now say, I have class B which implements methods that have the same name/signature as the ones in interface I, but it doesn't implements the interface.</p>
  
  <p>Should I always explicitly implement I?
  Even if I don't use it (though I might in the future) for type abstraction?</p>
  
  <p>A more meaningful, even if probably not realistic, example would be:</p>
  
  <pre><code>interface Printable {
     String print()
  
  class A implements Printable {
     //code...
     String print(){return "A";}
     //code...
  }
  
  class B {
     //code...
     String print(){return "B";}
     void otherMethod(){/*code*/}
     //code...
  }
  
  class Test {
     Printable a = new A();
     System.out.println(a.print());
     B b = new B();
     b.otherMethod();
     System.out.println(b.print());
  }
  </code></pre>
  
  <p>Are there any drawbacks on explicitly implementing, or not, the interface Printable?</p>
  
  <p>The only one I can think of is scalability for the second case.
  In the sense that if one day I'll want to explicitly use it as Printable, I'll be able to do so without any more effort.</p>
  
  <p>But is there anything else (patterns, optimization, good programming, style, ..) I should take into consideration?</p>