C# 中的方法重寫
方法重寫是C#程式設計中常用的函數操作,需要利用衍生類別來重寫基底類別中定義的操作。為了成功重寫,該方法應為靜態方法,基類和派生方法中的成員分類和存取修飾符應具有相同的類型,並且重寫只能應用於派生類,而不能應用於基類。方法重寫的其他名稱是運行時多態性、動態多態性和後期綁定。
如何在 C# 中使用重寫?
假設,我們的應用程式需要更改衍生類別中基類方法的行為,那麼我們應該進行方法重寫。為此,我們需要在衍生類別中建立與基底類別中具有相同簽名的方法來執行不同的任務。 在我們學習如何使用覆蓋技術之前,我們需要記住以下幾點。
- 在 C# 程式設計中,方法重寫也稱為運行時多態性、後期綁定或動態多態性。
- 只有在衍生類別中才可以進行方法重寫。因為在基底類別的衍生類別中重寫了一個方法。
- 該方法應該是用於重寫的非虛擬或靜態方法。
- 重寫方法和虛擬方法的存取等級修飾符應該相同。
被覆寫聲明覆寫的方法稱為覆蓋基底方法。這將出現在基類中。重寫的基底方法可以是抽象的、重寫的或虛擬的。呼叫新的實現,重寫方法繼承自該基底類別。
我們使用不同的關鍵字來進行方法重寫。他們是,
1.虛擬關鍵字
我們編譯器在程式中遇到 virtual 關鍵字,它知道該方法可以被其任何衍生類別覆寫。結構如下。
public virtual int EnemyHealth() { Console.WriteLine("Enemy Health"); }
2.覆蓋關鍵字
這存在於衍生類別中。它告訴編譯器該方法正在重寫基類中具有相同名稱和簽章的方法。
public override int EnemyHealth () { Console.WriteLine("Enemy 1"); }
範例
首先,讓我們來看看不使用 Virtual 和 override 關鍵字的範例。
代碼:
class Birds { public void Color( ) { Console.WriteLine("Birds will have different Colors"); } } class Parrot:Birds { public void Color( ) { Console.WriteLine("Parrot is Green"); } } class ExecutionClass { public static void Main( ) { Birds object; object = new Birds( ); object .Color( ); object = new Parrot( ); object.Color( ); } }
輸出:
在上面的範例中,我們建立了派生類別 Parrot 的對象,並將其參考儲存在 Birds 類型的引用變數物件中。
在下一個步驟中,我們使用引用變數物件來呼叫函數 Color ()。由於 object 包含對 Parrot 類型的物件的引用,因此我們自然會期望 Parrot 類別的函數 Color () 會被執行。但我們錯了。美麗的程式設計不會允許這種事發生。
令我們驚訝的是,執行的是Birds類別的Color()方法。這是因為函數是根據引用的類型而不是引用變數物件所引用的內容來呼叫的。由於該物件是 Birds 類型的引用,因此無論物件引用誰,都會呼叫 Birds 類別的 Color() 函數。
現在讓我們用 virtual 和 override 重寫相同的程序,這次我們將逐步進行以便更好地理解。
建立一個任意名稱的基底類別。這裡我使用的是 Birds。使用 virtual 關鍵字寫一個方法。這將是我們重寫的方法,我們將在繼承的類別中重寫它。在方法內部編寫一些訊息以在控制台中列印。
class Birds { public virtual void Color( ) { Console.WriteLine("Birds will have different Colors"); } }
現在再建立一個類別 Parrot 這次我們將從先前建立的基底類別(即 Birds)繼承它。為了繼承,我們使用‘:’符號。
鸚鵡類:鳥類
這裡寫一個帶有 override 關鍵字的函數並寫一些訊息。確保衍生類別中的方法名稱和簽章與基底類別中的方法名稱和簽章相符。
public override void Color ( ) { Console.WriteLine("Parrot is Green"); }
我們還需要一個類別來執行檢查重寫的功能。建立一個具有任意名稱的類別。在裡面寫下Main函數。
class ExecutionClass { public static void Main( ) { } }
建立父類別的對象,並使用該類別的對象觸發函數。這將呼叫 Birds 類別中存在的 Color 方法。
Birds object; object = new Birds( ); object .Color( );
現在建立衍生類別的物件並呼叫 Color 方法。這將呼叫 Parrot 類別的 Color 方法。
object = new Parrot( ); object.Color( );
你能猜出我們執行程式時的輸出嗎?如下圖所示。
輸出:
關鍵字 override 和 virtual 允許在任何時間分別呼叫基底類別和衍生類別方法,即使方法名稱和簽章相同。
結論
在這篇文章中我們了解了方法重寫、方法重寫的必要性、重寫原理的實際範例、實作方法、使用 virtual 和 override 關鍵字的必要性以及使用程式碼重寫的範例。我們可以得出結論,重寫是多態性中有用的功能之一,我們可以透過它來更改派生類別中基類方法的行為。
以上是C# 中的方法重寫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。

可以採用多種方法修改 XML 格式:使用文本編輯器(如 Notepad )進行手工編輯;使用在線或桌面 XML 格式化工具(如 XMLbeautifier)進行自動格式化;使用 XML 轉換工具(如 XSLT)定義轉換規則;或者使用編程語言(如 Python)進行解析和操作。修改時需謹慎,並備份原始文件。
