最近看见腾讯面试.net有道关于C#继承和重写的题目,原题如下:
abstract class BaseClass
{
public virtual void MethodA()
{
}
public virtual void MethodB()
{
}
}
class Class1: BaseClass
{
public void MethodA(string arg)
{
}
public override void MethodB()
{
}
}
class Class2: Class1
{
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
Console.WriteLine(o.MethodA());
}
}
请问,o.MethodA调用的是: ( )
A.BaseClass.MethodA B.Class2.MethodA
C.Class1.MethodA D.都不是
毫无疑问,答案选A.
我们不妨使用程序来证明:
首先创建BaseClass:
abstract class BaseClass
{
public virtual void MethodA() {
Console.WriteLine("BaseClass.MethodA");
}
public virtual vo