Inheritance, virtual and abstract types, alias, constants and Pointer type