If subclasses do not redefine the methods of their superclass, this can indicate that no abstraction is expressed through inheritance – we are facing pure implementation inheritance. Often a uses relation between classes will turn out to be more effective.
Related smells: Broken Hierarchy
M. Lippert, S. Roock, “Refactoring in Large Software Projects: Performing Complex Restructurings Successfully”. John Wiley and Sons, 2006.
All rights reserved (c) Tushar Sharma 2017-23.