The same reason the
Set interface only contains methods that already exist in the
Collection interface. These declarations are used so the contract of the method can be further specified (in the JavaDoc).
Object requires
toString() to return a non-null value. There are no other restrictions. The
CharSequence interface further specifies that the
toString() method must return the exact
String that the sequence of characters make up.
If I create a Class that implements CharSequence then I don't need to implement the toString() method
Not true. You *must* override this method so you return a
String made up from the characters in your
CharSequence. If you retain the default
toString() implementation, you violate the
CharSequence contract.
Another example is
Set.equals(). It further specifies the contract of
Object.equals() so every
Set can be meaningfully compared to every other
Set, regardless of their exact implementation.