求教一c#问题
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B:A
{
public override void Fun1(int i)
{
base.Fun1(i+1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
写出运行结果,并解释一下运行的由来
------解决方案--------------------2,5,1,6
a.Fun2(b);调用 b.Fun1(1); 结果2
Fun1(5);是父调用本身方法Fun1(int i)
结果5
b.Fun2(a); 调用的是
a.Fun1(1);调用父类方法结果1
Fun1(5);继承类重写复方法,从下往上覆盖调用 public override void Fun1(int i)
{
base.Fun1(i+1);
}
结果6
------解决方案--------------------http://community.csdn.net/Expert/topic/5734/5734674.xml?temp=.2942469
看看高手怎么解答的。