Question: what is the difference between base class and abstract class?
Answer: The main difference is the compiler won't let you instantiate an abstract class, while you could instantiate a base class (which may not make sense). Notice with the variable d we are guaranteed that the abstract methods have been overridden (otherwise the DerivedType class would have a compiler error).