Programming in C# Inheritance and Polymorphism