日期:2014-05-19  浏览次数:20803 次

谁帮做一道面试题呀,
8.             写出程序的输出结果:
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)中a.Fun1(1)这里的a其实是B类型的,所以调用的是b.Fun1,也就是base.Fun1(1+1),输出2;然后调用a.Fun1(5)输出5。

b.Fun2(a)中,a.Fun1(1)调用的是A类型的fun1方法,输出1,然后的Fun1(5)调用的是b.Fun1(5)所以输出6
------解决方案--------------------
override
------解决方案--------------------
考你的面向对象基础知识...
------解决方案--------------------
2
5
1
6