程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#中的abstract與virtual(3)

C#中的abstract與virtual(3)

編輯:關於C語言

new 使用 new 修飾符顯式隱藏從基類繼承的成員。若要隱藏繼承的成員,請使用相同名稱在派生類中聲明該成員,並用 new 修飾符修飾它。

類成員聲明中可以使用與一個被繼承的成員相同的名稱或簽名來聲明一個成員。發生這種情況時,就稱該派生類成員隱藏了基類成員。隱藏一個繼承的成員不算是錯誤,但這確實會導致編譯器發出警告。若要取消此警告,派生類成員的聲明中可以包含一個 new 修飾符,表示派生成員是有意隱藏基成員的。

using System;

namespace TheNewKeyWord
{

  class NewTestClassBase
   {
     public void PrintNewKeyWord()
     {
       Console.WriteLine(@"This is base class!");
     }
   }

  class NewTestClass : NewTestClassBase
   {
     /**//// <summary>
     /// 如果這樣寫:
     /// override public void PrintNewKeyWord()
     ///
     /// 將產生編譯錯誤:
     /// “TheNewKeyword.NewTestClass.PrintNewKeyWord()” :
     /// 無法重寫繼承成員“TheNewKeyword.NewTestClassBase.PrintNewKeyWord()”,
     /// 因為它未標記為 virtual、abstract 或 override。
     /// </summary>
     new public void PrintNewKeyWord()
     {
       Console.WriteLine(@"This is ""new"" keyWord!");
     }
   }

   /**//// <summary>
   /// TheNewKeyWord 測試“new”關鍵字。
   /// </summary>
   class TheNewKeyWord
   {
     /**//// <summary>
     /// 運行結果:
     /// This is base class!
     /// This is "new" keyWord!
     /// </summary
     static void Main()
     {
       //
       // TODO: 在此處添加代碼以啟動應用程序
       //
       NewTestClassBase newTestClassBase = new NewTestClassBase();
       NewTestClass newTestClass = new NewTestClass();

      newTestClassBase.PrintNewKeyWord();
       newTestClass.PrintNewKeyWord();
     }
   }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved