override是指“覆蓋”,是指子類覆蓋了父類的方法。子類的對象無法再訪問父類中的該方法。new是指“隱藏”,是指子類隱藏了父類的方法,當然,通過一定的轉換,可以在子類的對象中訪問父類的方法。所以說C# new和override的區別是覆蓋和隱藏
以下是代碼:
復制代碼 代碼如下:
<PRE class=csharp name="code">class Base
{
public virtual void F1()
{
Console.WriteLine("Base's virtual function F1");
}
public virtual void F2()
{
Console.WriteLine("Base's virtual fucntion F2");
}
}
class Derived:Base
{
public override void F1()
{
Console.WriteLine("Derived's override function F1");
}
public new void F2()
{
Console.WriteLine("Derived's new function F2");
}
}
class Program
{
public static void Main(string[] args)
{
Base b1 = new Derived();
//由於子類覆蓋了父類的方法,因此這裡調用的是子類的F1方法。也是OO中多態的體現
b1.F1();
//由於在子類中用new隱藏了父類的方法,因此這裡是調用了隱藏的父類方法
b1.F2();
}
}