首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

面试题 C# 虚方法与重写,该怎么处理

2012-01-19 
面试题 C# 虚方法与重写如题:usingSystemclassA{publicvoidF(){Console.WriteLine( A.F )}publicvirtu

面试题 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
我是不是改错了?
诸位帮看下


[解决办法]
using System;
class A
{
public void F() { Console.WriteLine( "A.F "); }
public virtual void G() { Console.WriteLine( "A.G "); }
}
class B : A
{
public void F() { Console.WriteLine( "B.F "); }
public override void G() { Console.WriteLine( "B.G "); }
}
class text
{
public static void Main()
{
B b = new B();
A a = b;
a.F();
a.G();
b.F();
b.G();
Console.ReadLine();

}
}


这样的结果才是:
A.F
B.G
B.F
B.G

[解决办法]
1. 你的Main函数写的就不对
2. 如果父类的方法是virtual或者abstract,子类为override,则是重写
否则默认的情况下是new

热点排行