我有以下類別:在C#override關鍵字
namespace ConsoleApplication8
{
public abstract class Employee
{
public virtual void Show()
{
Console.WriteLine("from base.");
}
}
public class Manager:Employee
{
public void Show()
{
Console.WriteLine("from child.");
}
}
class Program
{
static void Main(string[] args)
{
var man=new Manager();
man.Show();
Console.ReadKey();
}
}
}
在這裏,我還沒有在派生類Manager
使用任何override
關鍵字的方法Show()
但代碼運行正常。那麼override
關鍵字的實際用途是什麼。
嘗試員工的人=新的經理();和經理man =新經理();有和沒有覆蓋,而不是var man = new Manager();看看你是否還有問題。 – 2015-04-02 06:46:43
這裏的關鍵是如何在* compile-time *中定義的變量。當它已被引用爲'Manager'(在你的情況下使用'var')時,編譯器知道調用'Manager.Show'。當你引用'man'作爲基類型('Employee')時,* Polymorphism *開始起作用,現在'virtual'關鍵字告訴編譯器在* runtime *中檢查可能的重寫方法(通常使用vTable http:///en.wikipedia.org/wiki/Virtual_method_table)。 – haim770 2015-04-02 06:53:16