共用方式為


類別:物件的藍圖

更新:2007 年 11 月

類別是物件的符號表示,會描述組成物件的屬性、欄位、方法和事件,和藍圖描述建築物組成項目的道理相同。就像藍圖可用來建造許多建築物一樣,單一類別也是用來建立任何所需數量的物件。而且就像藍圖會定義使用建築物的人可使用建物的哪些部分,類別也可透過封裝控制使用者可存取的物件項目。

類別與物件

「類別」和「物件」這兩個詞有時可以互用,但事實上,類別是描述物件的「結構」,而物件則是指可使用的類別「執行個體」。每個執行個體在某方面完全類似其類別,某些方面又有些差異。因為物件是類別的執行個體,因此建立物件的動作稱為「執行個體化」(Instantiation)。

再以藍圖作比喻,若類別是藍圖,物件就是根據藍圖所蓋的建築物。一般而言,改變某個物件內的資料並不會改變其他物件內的資料 (唯一例外是「共用成員」(Shared Members),它是由 Shared 修飾詞 (Modifier) 所宣告的類別成員,其存在與類別的特定執行個體無關)。

封裝

「封裝」(Encapsulation) 是包含及控制存取相關項目群組的能力。類別提供最常見的方法之一來封裝項目。以下範例中,BankAccount 類別封裝了描述銀行帳戶的方法、欄位和屬性。

如果沒有封裝,您可能需要宣告數個不同的程序和變數,來儲存和管理銀行帳戶資訊,而且可能很難一次使用多個銀行帳戶。使用封裝 (Encapsulation) 可以將 BankAccount 類別中的資料和程序做為一個單位來使用。您可以同時使用數個銀行帳戶而不會混淆,因為每個帳戶由類別的唯一執行個體來代表。

封裝也讓您控制使用資料和程序的方式。您可以使用 Private 或 Protected 之類的存取修飾詞 (Modifier),來避免外部程序執行類別方法或讀取及修改屬性和欄位中的資料。您應該將類別的內部細節宣告為 Private,避免用於類別之外,這個技巧稱為「資料隱藏」(Data Hiding),也是保護帳戶餘額之類客戶資訊的方法。

封裝 (Encapsulation) 的基本規則之一,就是類別資料應該只能透過 Property 程序或方法修改或擷取。隱藏類別的實作 (Implementation) 詳細資訊可以避免以不佳的方式使用類別,且讓您日後可以修改這類項目,而不必擔心相容性的問題。例如,較新版的 BankAccount 類別可以變更 AccountBalance 欄位的資料型別,不會破壞依賴這個特定資料型別欄位的應用程式。

繼承

和 Visual Basic 結構一樣,您可以使用類別定義封裝 (Encapsulation) 一群相關項目的資料型別。但和結構不同的地方是,Visual Basic 類別可以繼承和擴充其他類別的特性。做為新類別基礎的類別稱為「基底類別」(Base Class)。而衍生自基底類別的類別則稱為「衍生類別」(Derived Class)。衍生類別會繼承基底類別中所有欄位、屬性、方法和事件。這表示您只要開發及偵錯類別一次,就能夠重新以它為基礎建立其他類別。

以下範例定義代表一般銀行帳戶的基底類別,以及繼承基底類別屬性但自訂為描述支票帳戶的特定類別。

Class BankAccount
    Private AccountNumber As String
    Private AccountBalance As Decimal
    Private HoldOnAccount As Boolean = False
    Public Sub PostInterest()
        ' Add code to calculate the interest for this account.
    End Sub
    ReadOnly Property Balance() As Decimal
        Get
            ' Return the available balance.
            Return AccountBalance
        End Get
    End Property
End Class

Class CheckingAccount
    Inherits BankAccount
    Sub ProcessCheck()
        ' Add code to process a check drawn on this account.
    End Sub
End Class

如需繼承的詳細資訊,請參閱繼承基本概念

共用成員

在預設情況下,類別資料是專用於類別的每一執行個體,但有時您會希望某一個資料項目由建立自類別的所有物件共用。在這種情況下,使用 Shared 修飾詞 (Modifier) 讓變數在所有類別執行個體 (Instance) 內共用相同的值 (在其他程式語言中,共用的成員有時會稱為「靜態成員」)。您不需要先建立類別的執行個體,就可以直接使用類別名稱來呼叫共用方法。

如需共用成員的詳細資訊,請參閱 Visual Basic 的共用成員

遮蔽

衍生類別可使用 Shadows 關鍵字將具有相同名稱的成員宣告為繼承成員。遮蔽成員不需要和被遮蔽的成員有相同的資料型別。例如,屬性可遮蔽 Integer 型別的變數。

如需共用成員的詳細資訊,請參閱 Visual Basic 中的遮蔽功能

請參閱

概念

結構和類別

繼承基本概念

Visual Basic 的共用成員

Visual Basic 中的遮蔽功能

參考

Shadows

Shared (Visual Basic)

其他資源

建立和使用物件

Visual Basic 的繼承