title: Why does NavigableSet (which extends SortedSet) declare subSet(E fromElement, E toElement) again?
body: <p>The <code>interface NavigableSet&lt;E&gt;</code> extends <code>interface SortedSet&lt;E&gt;</code> which declares the method
  <code>SortedSet&lt;E&gt;   subSet(E fromElement, E toElement)</code> . 
  However, when I look at <a href="http://docs.oracle.com/javase/6/docs/api/java/util/NavigableSet.html" rel="nofollow noreferrer">NavigableSet's API</a>, I see that it has declared the same method (with exactly the same signature). I also see that it says it inherits some methods (first, last, comparable) from <a href="http://docs.oracle.com/javase/6/docs/api/java/util/SortedSet.html" rel="nofollow noreferrer">SortedSet</a>.</p>
  
  <p>Since by definition, interfaces only contain method signatures, why would any child interface redeclare the same method that the parent interface has already declared (and there's no difference in semantics, in the API javadoc)?</p>
  
  <p>Edit: Came across a relevant and nice discussion here -
   <a href="https://stackoverflow.com/questions/563952/in-java-when-one-interface-extends-another-why-would-one-redeclare-a-method-in">In Java when one interface extends another, why would one redeclare a method in a subinterface?</a></p>