我试图理解 C# 中覆盖和虚拟的需要,所以我编写了以下代码:
using System;
namespace Override
{
class Base
{
public virtual void method()
{
Console.WriteLine("Base method");
}
}
class Derived : Base
{
public override void method()
{
Console.WriteLine("Derived method");
}
}
class Program
{
static void Main(string[] args)
{
Derived d = new Derived();
d.method();
}
}
}
我期待“派生方法”被调用和打印。然后我写了下面的代码而不使用虚拟/覆盖组合。
using System;
namespace Override
{
class Base
{
public void method()
{
Console.WriteLine("Base method");
}
}
class Derived : Base
{
public void method()
{
Console.WriteLine("Derived method");
}
}
class Program
{
static void Main(string[] args)
{
Derived d = new Derived();
d.method();
}
}
}
我得到了相同的结果,即调用并打印了“派生方法”。我的问题是,如果代码在没有虚拟/覆盖的情况下像我预期的那样工作,它们有什么需要?还是我在这里遗漏了什么?