using System; class Foo { public virtual void voo () { Console.WriteLine("Foo::voo"); } public void noo () { Console.WriteLine("Foo::noo"); } } class Boo : Foo { public override void voo () { Console.WriteLine("Boo::voo"); } public void noo () { Console.WriteLine("Boo::noo"); } } public class Test { public static void Main() { Foo ffoo = new Foo(), fboo = new Boo(); Boo bboo = new Boo(); ffoo.voo(); // Foo as Foo: Foo::voo ffoo.noo(); // Foo as Foo: Foo::noo fboo.voo(); // Boo as Foo: Boo::voo fboo.noo(); // Boo as Foo: Foo::noo bboo.voo(); // Boo as Boo: Foo::voo bboo.noo(); // Boo as Boo: Foo::noo } }