文章編號: 307222 - 上次校閱: 2001年11月5日 - 版次: 1.0

如何:BETA:在 Visual Basic .NET 中使用繼承

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
本文曾發行於 CHT307222
本文是討論一項 Microsoft 產品的 Beta 版本。本文中資訊是依現況提供,可能會不經通知而逕行變更。

對此 Beta 版本產品,Microsoft 還沒有正式的產品支援。如需取得 Beta 版本產品支援的相關資訊,請參閱隨附於 Beta 產品檔案中的文件,或查閱您下載此版本的 Web 位置。

在此頁中

全部展開 | 全部摺疊

結論

繼承 (Inheritance) 是一項重要的物件導向概念。它可以讓您建立相關類別的階層架構,並且重複使用現有類別中定義的功能。

在本文中,您將會學到如何在 Visual Basic .NET 中使用繼承。您將會定義一個基底類別 (Base Class),它含有一般銀行帳戶的欄位和方法。然後您要定義一個代表特定帳戶種類的衍生類別 (Derived Class)。這個衍生類別會從基底類別繼承一些成員、取代某些成員,然後加入一些這種帳戶類型的新成員。

主要需求

必要基礎知識:
  • Visual Basic .NET 語法
  • 物件導向概念

建立新主控台應用程式

  1. 啟動 Visual Studio .NET 並且在本機電腦上建立一個名為 UseInheritance 的新 Visual Basic 主控台應用程式 (Console Application)。
  2. [加入新項目] 對話方塊中,輸入 Account.vb [名稱] 欄位。按一下 [開啟]
  3. Visual Studio .NET 便會顯示 Account.vb 檔案。請檢視這個程式碼,熟悉一下內容。
  4. 儲存專案。

建立抽象基底類別

  1. [專案] 功能表上,按一下 [加入類別]
  2. MustInherit 修飾詞 (Modifier) 加入到 Account 類別,使 Account 成為抽象類別 (Abstract Class):
    Public MustInherit Class Account
    
    End Class

撰寫基底類別的程式碼

  1. 加入兩個欄位到 Account 類別:
    Private Name As String       ' Only accessible in base class
    Protected Balance As Double  ' Accessible in base class and derived class
  2. 加入一個建構函式 (Constructor) 來初始化這些欄位:
    Public Sub New(ByVal Nm As String, ByVal Bal As Double)
       Name = Nm
       Balance = Bal
    End Sub
  3. 將下列方法加入到類別。 Overridable 關鍵字表示這些方法在衍生類別中可以被取代:
    Public Overridable Sub Credit(ByVal Amount As Double)
       Balance += Amount
    End Sub
    
    Public Overridable Sub Debit(ByVal Amount As Double)
       Balance -= Amount
    End Sub
    
    Public Overridable Sub Display()
       Console.WriteLine("Name=" & Name & ", " & "Balance=" & Balance)
    End Sub
  4. 將下列方法加入到類別。因為這個方法沒有標記為 Overridable ,所以它在衍生類別中不能被取代。這個方法提供了變更帳戶持有人名稱的能力。
    Public Sub ChangeName(ByVal newName As String)
       Name = newName
    End Sub
  5. 將下列方法加入到類別。 MustOverride 關鍵字表示這個類別在衍生類別中必須被取代:
    Public MustOverride Function CalculateBankCharge() As Double

建立衍生類別

  1. [專案] 功能表上,按一下 [加入類別]
  2. [加入新項目] 對話方塊中,輸入 SavingsAccount.vb [名稱] 欄位。按一下 [開啟]
  3. Visual Studio .NET 便會顯示 SavingsAccount.vb 檔案。請檢視這個程式碼,熟悉一下內容。
  4. 變更 SavingsAccount 類別的定義如下,讓 SavingsAccount 從 Account 繼承 (請注意 Inherits 關鍵字必須出現在新的一行):
    Public Class SavingsAccount 
       Inherits Account
    
    End Class

撰寫衍生類別的程式碼

  1. 加入一個欄位到 SavingsAccount 類別:
    Private MinBalance As Double  ' If the balance drops below MinBalance, 
                                  ' the bank will charge a fee on the account
  2. 加入一個建構函式 (如下所示) 來初始化基底類別和這個類別中的欄位:
    Public Sub New(ByVal Nm  As String, _
                   ByVal Bal As Double, _
                   ByVal Min As Double)
       MyBase.New(Nm, Bal)        ' Call base-class constructor first
       MinBalance = Min           ' Then initialize fields in this class
    End Sub
  3. 將下列方法加入 SavingsAccount 類別。這些方法會取代從基底類別繼承的 Overridable 方法:
    Public Overrides Sub Debit(Amount As Double)
       If Amount <= Balance Then  ' Use balance, inherited from base class
          MyBase.Debit(Amount)    ' Call Debit, inherited from base class
       End If
    End Sub
    
    Public Overrides Sub Display()
       MyBase.Display()           ' Call Display, inherited from base class
       Console.WriteLine("$5 charge if balance goes below $" & MinBalance)
    End Sub
  4. 您必須取代所有來自基底類別的 MustOverride 方法。將下列方法加入到 SavingsAccount 類別:
    Public Overrides Function CalculateBankCharge() As Double
       If Balance < MinBalance Then
          Return 5.0
       Else
          Return 0.0
       End If
    End Function

驗證它是否能運作

  1. 在 [程式碼檢視] 視窗中顯示 Module1.vb 的程式碼。
  2. Main 方法中,建立一個 SavingsAccount 物件,如下所示:
    Dim sa As SavingsAccount = New SavingsAccount("Freda Smith", 100.00, 25)
    sa.Display()
  3. 加入下列程式碼來呼叫 SavingsAccount 或 Account 中的 Public 方法。
    sa.Credit(100)
    sa.Debit(180)
    sa.ChangeName("Freda Jones")
    sa.Display()
    Console.WriteLine("Bank charge: $" & sa.CalculateBankCharge())
  4. 建置這個應用程式。
  5. [偵錯] 功能表上,按一下 [啟動但不偵錯] 來執行應用程式。應用程式便會在主控台上顯示下列資訊:
    Name=Freda Smith, balance=100
    $5 charge if balance goes below $25
    Name=Freda Jones, balance=20
    $5 charge if balance goes below $25
    Bank charge: $5
  6. 再執行一次應用程式,但是這次要使用偵錯工具。在 Main 方法的開頭設定一個中斷點,並且從 [偵錯] 功能表選取 [啟動] 。逐步執行每一陳述式並且觀察應用程式執行中呼叫了哪些方法。




?考

本文件是根據 Microsoft Knowledgebase 文件編號 Q307222 翻譯的。若要參考原始英文文件內容,請至以下網址:

http://support.microsoft.com/support/kb/articles/Q307/2/22.asp (http://support.microsoft.com/kb/307222/en-us?ln=en-us&sd=gn&fr=0)

這篇文章中的資訊適用於:
  • Microsoft Visual Basic .NET 2002 Standard Edition
關鍵字:?
kbhowto kbhowtomaster KB307222
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。