抽象クラスを使って、同じコードで書いたものでも、それを利用する対象によって異なる実装内容に変化させることができます。
例えば、抽象クラスabstをつかって記述したものに対して、そのコードをバージョンAから利用した場合と、バージョンBから利用した場合とでは、動作が異なるように構成できるという具合です。
その実現にはjetspeedなどを利用することができます。また拡張性が高い構成にできるため、デザインパターンとしても存在しています。
参考サイト:
http://www.techscore.com/tech/DesignPattern/FactoryMethod.html/