See http://www.refactoring.com/catalog/collapseHierarchy.html
This refactoring merges a superclass and subclass into a single class.
It is used when one of those classes provides little value. This condition occurs when a developer pre-emptively designs a deep class hierarchy or after other refactorings have moved most of the functionality out of one of the classes.
This refactoring uses the refactorings PullUpField?, PullUpMethod?, PushDownMethod?, PushDownField?.