若要隱藏繼承的成員,請使用相同名稱在派生類中宣告該成員,並使用 new 修飾符對其進行修飾。
例如:
c#
publicclass basec
}public
class derivedc : basec
}
在此示例中,使用 derivedc.invoke 隱藏了 basec.invoke。
字段 x 不受影響,因為未使用類似名稱將其隱藏。
通過繼承隱藏名稱採用下列形式之一:
對同一成員同時使用 new 和 override 是錯誤的做法,因為這兩個修飾符的含義互斥。
new 修飾符會用同樣的名稱建立乙個新成員並使原始成員變為隱藏。
override 修飾符會擴充套件繼承成員的實現。
在不隱藏繼承成員的宣告中使用 new 修飾符將會生成警告。
在此示例中,基類 basec 和派生類 derivedc 使用相同的欄位名 x,從而隱藏了繼承欄位的值。
此示例演示 new 修飾符的用法。
另外還演示了如何使用完全限定名訪問基類的隱藏成員。
c#
publicclass basec
public
class derivedc : basec}/*
output:
10055
22*/
在此示例中,巢狀類隱藏了基類中同名的類。
此示例演示如何使用 new 修飾符來消除警告訊息,以及如何使用完全限定名來訪問隱藏的類成員。
c#
publicclass basec
}public
class derivedc : basec
static
void main()
}/*output:
100200
*/
如果移除 new 修飾符,程式仍將編譯和執行,但你會收到以下警告:
the keyword new is required on 'myderivedc.x' because it hides inherited member 'mybasec.x'.
new作為修飾符
new 修飾符與 new 操作符是兩個概念 new 修飾符用於宣告類或類的成員,表示隱藏了基類中同名的成員。而new 操作符用於例項化乙個型別 new 修飾符只能用於繼承類,一般用於彌補基類設計的不足 new 修飾符和 override 修飾符不可同時用在乙個成員上,因為這兩個修飾符在含義上互相排斥...
正確使用 new 修飾符
幾乎 net 所有開發人員都知道 new 修飾符可以重新定義從基類中繼承的非虛成員,但是大部分開發人員並不知道怎麼才能正確使用,甚至出現了濫用的情況。零 糾正常犯錯誤 講解如何正確使用 new 修飾符前我們先來看乙個段 public class demobase public class demo ...
C 語言參考 修飾符(C 參考)
修飾符用於修改型別和型別成員的宣告。本節介紹 c 修飾符 修飾符 用途 訪問修飾符 指定宣告的型別和型別成員的可訪問性。abstract 指示某個類只能是其他類的基類。const 指定無法修改欄位或區域性變數的值。event 宣告事件。extern 指示在外部實現方法。從基類成員隱藏繼承的成員。ov...