I wanted to understand the purpose of creating such a class structure where once we extend some abstract implementation, while enforcing to implement a common interface again.
For an instance, in java.util
generally the concrete classes implement an interface and also extend an abstract-class, while this abstract-class has already implemented the same interface.
ie.
HashMap class implements the Map interface and also extends AbstractMap abstract-class.
While, even the AbstractMap abstract-class implements the Map interface.