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

面试题 C# 虚方法与重写

如题:
using   System;
class   A
{
  public   void   F(){Console.WriteLine( "A.F ");}
  public   virtual   G(){Console.WriteLine( "A.G ");}  
}
class   B:A
{
  public   void   F(){Console.WriteLine( "B.F ");}
  public   override   G(){Console.WriteLine( "B.G ");}
}
void   main()
{
  B   b=new   B();
  A   a=b;
  a.F();
  a.G();
  b.F();
  b.G();
}
让写出程序将输出什么?
我先写的是:A.F-A.G-B.F-B.G   后又改成了:B.F-B.G-B.F-B.G
我是不是改错了?
诸位帮看下


------解决方案--------------------
答案:
A.F
B.G
B.F
B.G

你看到A类的G是个虚方法啊。。。所以它实际上是调用的B.G