The classic is to prefer composition over inheritance. Inheritance is there to capture abstractions along a seam that your system varies along.
If you don't quite clearly capture that abstraction, then yes, you will get strange forces on your designs. But this is a problem of programming in world where the abstractions are not quite right for what you are trying to achieve. Not that they will ever be perfect.