日期:2014-05-18  浏览次数:20410 次

求教一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

看看高手怎么解答的。