我想了解倍率在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();
}
}
}
我期待「派生法」被稱爲和printed.Then我寫了下面的代碼,而不使用虛擬/超控組合。
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();
}
}
}
而且我得到了相同的結果,即「派生法」打來電話,printed.My問題是,如果代碼工作沒有虛擬/覆蓋如我所料,什麼是他們的需求?或者我在這裏錯過了什麼?
難道你在第二個關於隱藏方法的警告? 「'Derived.Method()'隱藏繼承的成員Base.Method()'。如果隱藏是有意的,請使用new關鍵字\t」 – Sayse
謝謝大家的回答,現在我明確了這個概念 – ZoomIn