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();
}
}