Class 陳述式 (Visual Basic)

宣告類別的名稱,並導入類別所包含之變數、屬性、事件和程序的定義。

語法

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] [ Partial ] _  
Class name [ ( Of typelist ) ]  
    [ Inherits classname ]  
    [ Implements interfacenames ]  
    [ statements ]  
End Class  

組件

詞彙 定義
attributelist 選擇性。 請參閱屬性清單
accessmodifier 選擇性。 可以是下列其中一項:

- 公開
- Protected
- Friend
- 私用
- Protected Friend
- Private Protected

請參閱 Access levels in Visual Basic
Shadows 選擇性。 請參閱 Shadows
MustInherit 選擇性。 請參閱 MustInherit
NotInheritable 選擇性。 請參閱 NotInheritable
Partial 選擇性。 指定類別的部分定義。 請參閱 Partial
name 必要。 此類別的名稱。 請參閱 Declared Element Names
Of 選擇性。 指定這是泛型類別。
typelist 使用 Of 關鍵字時的必要項目。 此類別的型別參數清單。 請參閱類型清單
Inherits 選擇性。 表示此類別繼承另一個類別的成員。 請參閱 Inherits 陳述式
classname 使用 Inherits 陳述式時的必要項目。 衍生出此類別之類別的名稱。
Implements 選擇性。 表示此類別會實作一或多個介面的成員。 請參閱 Implements 陳述式
interfacenames 使用 Implements 陳述式時的必要項目。 此類別實作之介面的名稱。
statements 選擇性。 定義此類別之成員的陳述式。
End Class 必要。 終止 Class 定義。

備註

Class 陳述式定義新的資料類型。 類別是物件導向程式設計的基本建置組塊 (OOP)。 如需詳細資訊,請參閱物件和類別

您只能在命名空間或模組層級使用 Class 。 這表示類別的宣告內容必須是來源檔案、命名空間、類別、結構、模組或介面,而且不得為程序或組塊。 如需詳細資訊,請參閱宣告內容和預設存取層級

每個類別執行個體都有不同於其他所有執戈行個體的存留期。 此存留期自 New Operator 子句或 CreateObject 等函式建立類別執行個體時起算。 當指向該執行個體的所有變數設定皆為 Nothing 或其他類別的執行個體時,該執行個體便會結束。

類別的預設值為 Friend 存取。 您可以使用存取修飾詞調整其存取層級。 如需詳細資訊,請參閱 Visual Basic 的存取層級

規則

  • 巢狀。 您可以在類別之中再定義類別。 外層的類別稱為包含類別,內層的類別稱為巢狀類別

  • 繼承: 若類別使用 Inherits 陳述式,您就只能指定一個基底類別或介面。 類別無法從多個元素繼承。

    類別無法從其他內含多個限制存取層級的類別繼承。 例如,Public 類別無法從 Friend 類別繼承。

    類別無法從自身的巢狀類別繼承。

  • 實作。 若類別使用 Implements 陳述式,便須實作您在 interfacenames 中指定之每個介面所定義的每個成員。 這是實作基底類別成員的例外狀況。 如需詳細資訊,請參閱 Implements 中的<重新實作>。

  • 預設屬性。 類別最多可指定一個屬性作為其預設屬性。 如需詳細資訊,請參閱預設

行為

  • 存取層級。 在類別中,您可以使用成員自己的存取層級來宣告每個成員。 除了變數和常數的預設存取為 Private 存取之外,類別成員的存取預設為 Public。 當類別的存取限制較其任何成員更為嚴格時,會優先採用類別存取層級。

  • [範圍]。 類別含括在其包含命名空間、類別、結構或模組的範圍內。

    每個類別成員的範圍都是整個類別。

    存留期。 Visual Basic 不支援靜態類別。 靜態類別的對等功能由模組提供。 如需詳細資訊,請參閱 Module 陳述式

    類別成員的存留期取決於其宣告方式和位置。 如需詳細資訊,請參閱 Visual Basic 中的存留期

  • 限定性條件。 類別外部的程式碼必須使用類別的名稱限定成員的名稱。

    若巢狀類別內的程式碼在參考程式設計元素時未加以限定,Visual Basic 會先搜尋巢狀類別內的元素,然後循序從其包含類別等,一路向外搜尋到最外層的包含元素。

類別和模組

這些元素有許多相似之處,但也有一些重要的差異。

  • 術語: 舊版 Visual Basic 可辨識兩種型別的模組:類別模組 (.cls 檔案) 和 標準模組 (.bas 檔案)。 目前的版本會分別呼叫這些類別模組

  • 共用成員。 您可以控制類別的成員為共用或執行個體成員。

  • 物件導向。 類別是物件導向,但模組不是。 您可以建立同一類別的一或多個執行個體。 如需詳細資訊,請參閱物件和類別

範例

下列範例使用 Class 陳述式定義一個類別和幾個成員。

Class BankAccount
    Shared interestRate As Decimal
    Private accountBalance As Decimal
    Public holdOnAccount As Boolean = False

    Public ReadOnly Property Balance() As Decimal
        Get
            Return accountBalance
        End Get
    End Property

    Public Sub PostInterest()
        accountBalance = accountBalance * (1 + interestRate)
    End Sub

    Public Sub PostDeposit(ByVal amountIn As Decimal)
        accountBalance = accountBalance + amountIn
    End Sub

    Public Sub PostWithdrawal(ByVal amountOut As Decimal)
        accountBalance = accountBalance - amountOut
    End Sub
End Class

另請參閱