Take a look at the following program
using System; public class A { public int v = 1; public virtual int Op1(){return v;} } public class B: A{ public new int v = 2; public override int Op1(){return v;} public int Op2(){return base.v;} } public class Client{ public static void Main (){ A a = new B(); Console.WriteLine("{0}", a.v); Console.WriteLine("{0}", a.Op1()); B b = new B(); Console.WriteLine("{0}", b.v); Console.WriteLine("{0}", b.Op2()); } } |
and figure out what it prints.
Explain the behaviour.