So you\'ve got an interface and an abstract class that implements a subset of the methods in the interface. You\'ve also got some classes that inherit the abstract class and giv
Do you have more implementations of the interface than the abstract class or subclasses thereof? Do your design need the interface? Otherwise, the interface contributes nothing to your design, and I suggest you simply get rid of it.
When it comes to your explicit questions, the abstract class should implement the interface. Classes extending the abstract class shouldn't.
You shouldn't redundantly declare abstract methods in the abstract class that already is in the interface.