C# 語言經過專門設計
C# 允許派生類包含與基類方法名稱相同的方法
基類方法必須定義為 virtual
如果派生類中的方法前面沒有 new 或 override 關鍵字
如果派生類中的方法前面帶有 new 關鍵字
如果派生類中的方法前面帶有 override 關鍵字
可以從派生類中使用 base 關鍵字調用基類方法
override
默認情況下
class A
{
public A()
{
Console
}
public virtual void Fun()
{
Console
}
public virtual void Fun
{
Console
}
public void Fun
{
Console
}
}
class B : A
{
public B()
{
Console
}
public new void Fun()
{
Console
}
public override void Fun
{
Console
}
public void Fun
{
Console
}
}
static void Main(string[] args)
{
A a = new B();
a
a
a
Console
}
輸出
A
B
A
B
A
OVERRIDE和NEW的方法都必須是基類中VIRTUAL或ABSTRACT的方法
OVERRIDE的方法是可以通過BASE前綴調用基類中被OVERRIDE的方法的
NEW的方法是一個全新的方法
override
new
new關鍵字就是終止該方法的虛擬性
class A
{
public abstract void func(){};
}
class B:A
{
public override void func(){};
}
class C:B
{
public new void func(){};
}
那麼
A a = new B();
a
但不能這麼做
A a = new C();
a
而且也不能再override這個方法
class D:C
{
public override void func(){};
}
From:http://tw.wingwit.com/Article/program/net/201311/12593.html