public static void Main(string[] args) { var der1 = new Derived1(); var der2 = new Derived2(); Console.WriteLine("Derived 1: {0}", der1.MyMethod()); Console.WriteLine("Derived 2: {0}", der2.MyMethod()); Console.ReadLine(); }
static void Main(string[] args) { Base2 b = new Base2(); b.Execute(); b = new Derived2(); b.Execute(); // Running this code will output Base2.Execute twice. // If you change the base execute method to be virtual and // the derived class to override instead of hide the Execute method, // the code will display Base2.Execute and Derived2.Execute. // You should try to avoid hiding methods with the new keyword. Derived2 d = new Derived2(); d.Execute(); b = d; b.Execute(); Console.ReadLine(); }