using System; public interface I { void test(); } public class A : I { public virtual void test() { System.Console.Out.WriteLine("A\n"); } } public class B : A { public override void test() { System.Console.Out.WriteLine("B\n"); } } public class Main_ { public static void Main(string[] args) { Main_.doTest(new B()); } public static void doTest(I i) { i.test(); } }