共用方式為


從現有的類別建置類別:使用繼承

更新:2007 年 11 月

在本課程中,您將學習如何使用繼承,根據現有類別建立類別。

許多真實生活物件都有共同的屬性和行為,例如,所有汽車都有輪子和引擎,都能夠行駛,也能夠停止。但是,有些汽車也具備非共同的屬性,例如,敞蓬車有可移動的車頂,可以透過電動方式或是用手搖下來。

如果您建立某個物件來代表汽車,您可能會想要包含所有共同屬性 (Attribute) 和行為的屬性 (Property) 和方法,但可能不要加入敞蓬車頂之類的屬性 (Attribute),因為這種屬性 (Attribute) 並不適用於所有汽車。

您可以使用「繼承」,建立衍生自汽車類別的「敞蓬車」類別。它繼承了所汽車類別的屬性,而且可以入加所有敞蓬車特有的屬性和行為。

從現有類別繼承

Inherits 陳述式是以「基底類別」的現有類別為基礎,宣告稱為「衍生類別」的新類別。衍生類別繼承基底類別中定義的所有屬性、方法、事件、欄位及常數。下列程式碼顯示衍生類別的宣告。

Class DerivedClass
    Inherits BaseClass
End Class

之後,新類別 DerivedClass 可以執行個體化,其存取的屬性和方法就跟 BaseClass 一樣,而且您可以加入新類別特有的新屬性和方法。例如,看一下您在上一個課程中建立的 Persons 類別。

假設您想要有一個代表棒球隊員的類別。棒球隊員具有 Persons 類別中定義的所有屬性,但是他們也有獨特的屬性,如號碼和位置。此時,您就要建立從 Persons 繼承的新衍生類別,並加入新屬性至該類別,而不是將這些屬性加入至 Persons 類別。

試試看!

若要建立衍生類別

  1. 開啟您在上一個課程中所建立的 Persons 專案。如果您並未儲存,請回到測試類別課程,完成該程序。

  2. 在 [方案總管] 中,選取 [Persons] 專案節點。

  3. 在 [專案] 功能表中選擇 [加入類別]。

  4. 在 [加入新項目] 對話方塊中,在 [名稱] 對話方塊內輸入 Players,然後按一下 [加入]。

    新的類別模組就會加入至專案。

  5. 在 [程式碼編輯器] 中,就在 Public Class Players 行下面加入下列程式碼。

    Inherits Persons
    
  6. 加入下列程式碼,以定義兩個新屬性。

    Private numberValue As Integer
    Private positionValue As String
    Public Property Number() As Integer
        Get
            Number = numberValue
        End Get
        Set(ByVal value As Integer)
            numberValue = value
        End Set
    End Property
    Public Property Position() As String
        Get
            Position = positionValue
        End Get
        Set(ByVal value As String)
            positionValue = value
        End Set
    End Property
    
  7. 在 [檔案] 功能表上,按一下 [全部儲存]。

測試 Players 類別

現在,您已經建立衍生自 Persons 類別的 Players 類別。在下列程序中,您將建立新的程式,以測試 Players 類別。

若要建立類別的測試專案

  1. 指向 [檔案] 功能表上的 [加入],然後按一下 [新增專案]。

  2. 在 [加入新的專案] 對話方塊中,請選取 [範本] 窗格中的 [Windows 應用程式]。

  3. 在 [名稱] 方塊中,輸入 PlayerTest,再按 [確定]。

  4. 新的 Windows Form 專案隨即加入至 [方案總管],並且出現新的表單。

  5. 選取 [方案總管] 中的 PlayerTest 專案,然後按一下 [專案] 功能表上的 [設定為啟始專案]。

  6. 選取 [方案總管] 中的 PlayerTest 專案,然後按一下 [專案] 功能表上的 [加入參考]。

    [加入參考] 對話方塊隨即開啟。

  7. 按一下 [專案] 索引標籤,然後選擇 [Persons],再按一下 [確定]。

  8. 按兩下表單,開啟 [程式碼編輯器],然後就在程式行 Public Class Form1 下面輸入以下宣告。

    Dim player1 As New Persons.Players
    Dim player2 As New Persons.Players
    
  9. 這樣就會宣告 Players 類別的兩個新執行個體。

  10. 在 [檔案] 功能表上,按一下 [全部儲存]。

若要測試衍生的類別

  1. 在 [方案總管] 中,選取 PlayerTest 專案中的 Form1,然後按一下 [檢視] 功能表上的 [程式碼]。

  2. 在 [程式碼編輯器] 中,將下列程式碼加入至 Form1_Load 事件程序。

    With player1
        .FirstName = "Andrew"
        .LastName = "Cencini"
        .Number = 43
        .Position = "Shortstop"
    End With
    With player2
        .FirstName = "Robert"
        .LastName = "Lyon"
        .Number = 11
        .Position = "Catcher"
    End With
    
  3. 在 [方案總管] 中,選取 PlayerTest 專案中的 Form1,然後按一下 [檢視] 功能表上的 [設計工具]。

  4. 從 [工具箱] 中,將兩個 [Button] 控制項拖曳到表單上。

  5. 選取第一個 [Button] 控制項,然後在 [屬性] 視窗中將 [Text] 屬性設定為 At Bat。

  6. 選取第二個 [Button] 控制項,然後在 [屬性] 視窗中將 [Text] 屬性設定為 On Deck。

  7. 按兩下第一個按鈕 (At Bat),開啟 [程式碼編輯器],然後在 Button1_Click 事件處理常式中,輸入以下程式碼。

    MsgBox(player1.Position & " " & player1.FullName & ", #" & _
      CStr(player1.Number) & " is now at bat.")
    

    請注意,您是使用繼承自 Persons 基底類別的 FullName 方法。

  8. 在 Button2_Click 事件處理常式中加入以下程式碼。

    MsgBox(player2.Position & " " & player2.FullName & ", #" & _
      CStr(player2.Number) & " is on deck.")
    
  9. 請按 F5 執行程式。按一下每個按鈕,查看結果。

  10. 從 [檔案] 功能表上,選擇 [全部儲存]。

後續步驟

在本課程中,您學到如何從現有類別繼承,以及如何擴充衍生類別。您可以在詳述:覆寫成員中更深入學習有關繼承的情形,或者,您也可以繼續進行下一個課程,學習有關集合的情形。

下一個課程:使用集合管理多個物件

請參閱

概念

繼承基本概念