using System; public class A { protected virtual void foo() { Console.WriteLine("a.foo() called."); } }; public class B : A { protected override void foo() { Console.WriteLine("b.foo() called."); } public void call_foo() { foo(); } }; public class MainClass { public static void Main(string[] args) { A a = new A(); B b = new B(); b.call_foo(); } };