Sometimes we start doing some work with an expectation that our incomplete work will be carried out by someone else. A real life example can be seen in case of properties purchases and modeling those. It is very common that many of our grandparents may bought some properties earlier, then our parents made a small house in that property and ultimately we give the house a larger shape or we redecorate the house. So basic idea is same: we want someone to continue and complete the incomplete work first. We give them freedom that upon completion, they can remodel as per their needs. The concepts of abstract class suits best in such type of scenarios in the programming world.