Question: what is the difference between inheritance and abstract class?
Answer: Abstract classes are used to be inherited only. But when you inherited from a non abstract class you can create instance from both of derived and base classes. So we can say abstract classes are used to generate new types,to be inherited not to create instance !