今天面试遇到一神题,求解释
public class A
{
public virtual void Print()
{
Console.WriteLine("A");
}
} public class B : A
{
public override void Print()
{
Console.WriteLine("B");
}
} public class C : B
{
public void Print()
{
Console.WriteLine("C");
}
} public class D : C
{
public new virtual void Print()
{
Console.WriteLine("D");
}
}不求甚解,谁能解释下,下面4个方法分别的输出结果,为什么会这么输出
A a = new D();
a.Print();//B B b = new B();
A a1 = (A)b;
a1.Print();//B C c = new C();
A a2 = (A)c;
a2.Print();//B D d = new D();
C c1 = (C)d;
c1.Print();//C
public class A
{
public virtual void Print()
{
Console.WriteLine("A");
}
} public class B : A
{
public override void Print()
{
Console.WriteLine("B");
}
} public class C : B
{
public void Print()
{
Console.WriteLine("C");
}
} public class D : C
{
public new virtual void Print()
{
Console.WriteLine("D");
}
}不求甚解,谁能解释下,下面4个方法分别的输出结果,为什么会这么输出
A a = new D();
a.Print();//B B b = new B();
A a1 = (A)b;
a1.Print();//B C c = new C();
A a2 = (A)c;
a2.Print();//B D d = new D();
C c1 = (C)d;
c1.Print();//C
回去好好翻翻书吧。
一个属于A,一个属于C,一个属于D只要你明白这两句话你就明白这题的意思了。