詳述:覆寫成員
更新:2007 年 11 月
在本課程中,您將學習如何覆寫衍生類別的成員。
在上一個課程中,您學會如何自基底類別繼承,然後用新的屬性擴充衍生類別。除了加入新屬性或方法至衍生類別以外,您也可能想要變更或「覆寫」現有屬性或方法的行為。
例如,您可能會建立從具有 StartEngine 方法之 Car 類別衍生的 Truck 類別。如果 Truck (卡車) 有柴油引擎,啟動引擎的程序可能會與 Car (汽車) 的程序不同;在本範例中,您要覆寫 StartEngine 方法,讓它更適合 Truck (卡車)。
覆寫屬性及方法
根據預設,類別中的屬性和方法不能加以覆寫。若要允許衍生類別覆寫屬性或方法,它必須用 Overridable 關鍵字宣告,以標示為「可覆寫」。
Public Overridable Property EngineType As String
Public Overridable Sub StartEngine(ByVal EngineType As String)
從基底類別繼承時,標示為 Overridable 的屬性和方法可以原封不動地使用,也可以用 Overrides 關鍵字宣告,配合您的需要修改。
Public Overrides Property EngineType As String
Public Overrides Sub StartEngine(ByVal EngineType As String)
在上一個課程建立的 Players 類別中,您可能想要覆寫 FullName 方法,以包含球員編號,並除去傳回中間名的程式碼。
試試看!
若要覆寫 FullName 方法
開啟您在上一個課程中所建立的 Persons 專案。如果您並未儲存,請回到上一個課程:從現有的類別建置類別:使用繼承,並完成該程序。
在 [方案總管] 中,選取 [Persons.vb] 節點,然後在 [檢視] 功能表中選擇 [程式碼]。
在 [程式碼編輯器] 中,修改 FullName 方法的宣告如下。
Public Overridable Function FullName() As String
在 [方案總管] 中,選取 [Players.vb] 節點,然後在 [檢視] 功能表中選擇 [程式碼]。
在 [程式碼編輯器] 中,加入下列程式碼至類別。
Public Overrides Function FullName() As String FullName = FirstName & " " & LastName & ", #" & numberValue End Function
在 [方案總管] 中,選取 [PlayerTest] 專案中的 [Form1.vb] 節點,然後在 [檢視] 功能表中選擇 [程式碼]。
在 [程式碼編輯器] 中,修改 Button1_Click 事件程式碼如下。
MsgBox(player1.Position & " " & player1.FullName & _ " is now at bat.")
修改 Button2_Click 事件程式碼如下。
MsgBox(player2.Position & " " & player2.FullName & _ " is on deck.")
按 F5 執行程式,然後按一下各個按鈕,顯示結果。
請注意結果跟以前相同,即使您現在使用的是覆寫 FullName 方法也一樣。
從 [檔案] 功能表上,選擇 [全部儲存]。
後續步驟
在本課程中,您學會如何覆寫方法。在下一個課程中,您將學習如何使用集合,管理類似物件的群組。
下一個課程:使用集合管理多個物件