Several clients use the same subset of a class's interface, or two classes have part of their interfaces in common. Extract the subset into an interface.
You have two methods in subclasses that perform similar steps in the same order, yet the steps are different. Get the steps into methods with the same signature, so that the original methods become the same. Then you call pull them up.
A subclass uses only part of a superclasses interface or does not want to inherit data. Create a field for the superclass, adjust methods to delegate to the superclass, and remove the subclassing.