C# 父类引用子类对象问题求解
代码如下:
using System;
namespace Inhertied
{
public class Father
{
public void DoWork()
{
Console.WriteLine("Father.DoWork()");
}
public virtual void DoVirtualWork()
{
Console.WriteLine("Father.DoVirtualWork()");
}
public virtual void DoVirtualAll()
{
Console.WriteLine("Father.DoVirtualAll()");
}
}
public class Son:Father
{
public static void DoStaticWork()
{
Console.WriteLine("Son.DoStaticWork()");
}
public new void DoWork()
{
Console.WriteLine("Son.DoWork()");
}
public new virtual void DoVirtualWork()
{
base.DoVirtualWork();
Console.WriteLine("Son.DoVirtualWork()");
}
public override void DoVirtualAll()
{
Console.WriteLine("Son.DoVirtualAll()");
}
}
public class Grandson:Son
{
public override void DoVirtualWork()
{
base.DoVirtualWork();
Console.WriteLine("Grandson.DoVirtualWork()");
}
public override void DoVirtualAll()
{
base.DoVirtualAll();
Console.WriteLine("Grandson.DoVirtualAll()");
}
}
class IL_Method_Test
{
public static void Main()
{
Father son=new Son();
son.DoWork();
son.DoVirtualWork();
Son.DoStaticWork();
Father grandson=new Grandson();
grandson.DoWork();
grandson.DoVirtualWork();
grandson.DoVirtualAll();
Console.ReadKey();
}
}
}
//输出结果如下:
/*OUTPUT
Father.DoWork()
Father.DoVirtualWork()
Son.DoStaticWork()
Father.DoWork()
Father.DoVirtualWork()
Son.DoVirtualAll()
Grandson.DoVirtualAll()
*/
有木有可以给我讲讲为啥输出这样的结果,new 、override、new virtual分别起到什么作用??