在C#中,virtual 關(guān)鍵字用于定義可以在派生類中重寫的方法、屬性或索引器。它允許派生類通過使用 override 關(guān)鍵字來提供自己的實(shí)現(xiàn)。
使用 virtual 關(guān)鍵字可以創(chuàng)建一個(gè)虛擬成員,這意味著該成員可以在派生類中被重寫。派生類可以通過提供自己的實(shí)現(xiàn)來改變基類中定義的行為。這種特性是面向?qū)ο缶幊讨袑?shí)現(xiàn)多態(tài)性的關(guān)鍵之一。
使用 virtual 關(guān)鍵字的語法如下所示:
public virtual returnType MethodName(parameter)
{
// 方法實(shí)現(xiàn)
}
在基類中使用 virtual 關(guān)鍵字定義的成員可以被派生類重寫,而不使用 virtual 關(guān)鍵字定義的成員則不能重寫。重寫派生類中的虛擬方法時(shí),需要使用 override 關(guān)鍵字:
public override returnType MethodName(parameter)
{
// 新的方法實(shí)現(xiàn)
}
注意,只有修飾符為 public、protected 或 internal 的方法、屬性或索引器才能被重寫。
在派生類中重寫基類的虛擬成員時(shí),可以使用 base 關(guān)鍵字來調(diào)用基類中的實(shí)現(xiàn)。
使用 virtual 關(guān)鍵字可以實(shí)現(xiàn)多態(tài)性,即在運(yùn)行時(shí)根據(jù)實(shí)際對(duì)象的類型調(diào)用相應(yīng)的方法實(shí)現(xiàn)。這樣可以在不修改基類代碼的情況下,通過派生類的重寫來改變基類中的行為。