Why not override instead of using abstract class?
This might be a simple question for many but has confused me. I am picking an example from Kathy Sierra that shows the utility of Abstract Classes but I am unable to understand the overall importance of abstract classes. Example We have an abstract class Car with abstract methods - power() & topSpeed() . These methods are implemented in sub classes BMW , Volkswagen and Audi . My question is - why do we need to have the abstract class Car in the first place to customize methods for each car type? Why not have these two methods in any one of these car subtypes, say BMW and then other two -