首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# abstract、virtual、new、override 關鍵字深度解析 (3/3)

     編輯:關於C語言

new 修飾詞:隱藏基類成員

使用 new 明確隱藏繼承自基類的同名成員。不隱藏也合法,但編譯器會發出警告 (CS0108);加上 new 可消除警告,表示「刻意隱藏」。

程式碼範例

class Base
{
    public void Print() => Console.WriteLine("Base");
}

class Derived : Base
{
    new public void Print() => Console.WriteLine("Derived (new)");
}

class Test
{
    static void Main()
    {
        Base b = new Base(); b.Print();        // Base
        Derived d = new Derived(); d.Print();  // Derived (new)
        Base bd = new Derived(); bd.Print();   // Base (非虛擬,靜態繫結)
    }
}

關鍵差異總結表

關鍵字用途繫結時機多型行為
virtual基類宣告可被覆寫執行期是
override衍生類覆寫虛擬/抽象/override 成員執行期是
abstract強制衍生類實作,無本體執行期是
new隱藏基類同名成員 (非多型)編譯期否

常見錯誤

  • 嘗試 override 非 virtual/abstract/override 成員 → 編譯錯誤。
  • 同一成員同時使用 new 和 override → 編譯錯誤。
  • override 改變存取層級 (如 protected override 改 public) → 編譯錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved