用關鍵字 virtual 修飾的方法,叫虛方法。可以在子類中用override 聲明同名的方法,這叫“重寫”。相應的沒有用virtual修飾的方法,我們叫它實方法。
重寫會改變父類方法的功能。
看下面演示代碼
{
public virtual string GetName()
{
return "叔祥";
}
}
{
public override string GetName()
{
return "xiangshu";
}
}
Console.WriteLine(c1.GetName());//輸出“祥叔”
Console.WriteLine(c2.GetName());//輸出“xiangshu”
Console.WriteLine(c3.GetName());//輸出“xiangshu”
在子類中用 new 關鍵字修飾 定義的與父類中同名的方法,叫覆蓋。
覆蓋不會改變父類方法的功能。
看下面演示代碼:
{
public string GetName()
{
return "祥叔";
}
}
{
public new string GetName()
{
return "xiangshu";
}
}
Console.WriteLine(c1.GetName());//輸出“祥叔”
Console.WriteLine(c2.GetName());//輸出“xiangshu”
Console.WriteLine(c3.GetName());//輸出“祥叔”