Class 陳述式 (Visual Basic)

宣告類別的名稱,並引入組成類別的變數、屬性 (Property)、事件和程序的定義。

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

組件

詞彙

定義

attributelist

選擇項。 請參閱屬性清單

accessmodifier

選擇項。 可以是下列其中一項:

請參閱Visual Basic 中的存取層級

Shadows

選擇項。 請參閱 Shadows

MustInherit

選擇項。 請參閱MustInherit (Visual Basic)

NotInheritable

選擇項。 請參閱NotInheritable (Visual Basic)

Partial

選擇項。 表示類別的部分定義。 請參閱Partial (Visual Basic)

name

必要項。 這個類別的名稱。 請參閱宣告項目名稱 (Visual Basic)

Of

選擇項。 指定這是泛型類別。

typelist

如果使用 Of 關鍵字,則為必要項。 這個類別的型別參數清單。 請參閱型別清單

Inherits

選擇項。 表示此類別會繼承另一個類別的成員。 請參閱Inherits 陳述式

classname

如果使用 Inherits 陳述式,則此為必要項。 衍生這個類別的類別名稱。

Implements

選擇項。 表示此類別會實作一或多個介面的成員。 請參閱Implements 陳述式

interfacenames

如果使用 Implements 陳述式,則此為必要項。 此類別所實作的介面名稱。

statements

選擇項。 定義此類別之成員的陳述式。

End Class

必要項。 結束 Class 定義。

備註

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

Class 只能用於命名空間或模組層級。 這表示類別的「宣告內容」必須是原始程式檔 (Source File)、命名空間、類別、結構、模組或介面,而不能是程序或區塊。 如需詳細資訊,請參閱宣告內容和預設存取層級 (Visual Basic)

類別的每個執行個體都有與其他執行個體無關的存留期 (Lifetime)。 使用 New 運算子 (Visual Basic) 子句或 CreateObject 這類的函式建立執行個體時,這個存留期就會開始。 當指向執行個體的所有變數都已設為 Nothing (Visual Basic) 或其他類別的執行個體時,就會結束這個存留期。

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

規則

  • 巢狀:您可以在某個類別內定義另一個類別。 外部類別稱為「包含類別」,內部類別則稱為「巢狀類別」。

  • 繼承如果類別使用 Inherits 陳述式,您就只能指定一個基底類別或繼承。 類別無法繼承自多個項目。

    類別無法繼承自具有更受限制之存取層級的另一個類別。 例如,Public 類別無法繼承自 Friend 類別。

    類別無法繼承自在其中形成巢狀的類別。

  • 實作如果類別會使用 Implements 陳述式,則您必須實作在 interfacenames 中指定之每個介面所定義的每個成員。 這個動作的例外狀況是重新實作基底類別成員。 如需詳細資訊,請參閱 Implements 子句 (Visual Basic) 中「重新實作」的內容。

  • 預設屬性類別最多可以指定一個屬性做為它的「預設屬性」(Default Property)。 如需詳細資訊,請參閱Default (Visual Basic)

行為

  • 存取層級:在類別內,您可以使用成員本身的存取層級宣告各個成員。 類別成員會預設值為 Public (Visual Basic) 存取,但預設值為 Private (Visual Basic) 存取的變數和常數除外。 當類別所擁有的存取比它的其中一個成員更受限制時,會優先使用類別存取層級。

  • 範圍。:類別所在的範圍會涵蓋它所包含的命名空間、類別、結構或模組。

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

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

    類別成員所擁有的存留期則會依據宣告這些存留期的方法和地點而定。 如需詳細資訊,請參閱Visual Basic 中的存留期

  • 限定性條件。:類別外的程式碼必須以該類別的名稱,限定成員的名稱。

    如果巢狀類別內部的程式碼會對程式設計項目產生未限定的參考,Visual Basic 會先在巢狀類別中搜尋項目,然後在其包含類別中進行搜尋,依此類推,直到結束對最外層之包含項目的搜尋為止。

類別和模組

這些項目有許多相似點,但也有一些重要的差異。

  • 用語舊版的 Visual Basic 可以辨認兩種模組:「類別模組」(Class Module,.cls 檔案) 和「標準模組」(Standard Module,.bas 檔案)。 目前的版本會分別呼叫這些「類別」和「模組」。

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

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

範例

下列範例會使用 Class 陳述式,定義類別和數個成員。

Class bankAccount
    Shared interestRate As Decimal
    Private accountNumber As String
    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

請參閱

工作

HOW TO:使用泛型類別 (Visual Basic)

參考

Interface 陳述式 (Visual Basic)

Module 陳述式

Property 陳述式

概念

結構和類別 (Visual Basic)

物件存留期:物件的建立和終結 (Visual Basic)

Visual Basic 中的泛型型別 (Visual Basic)

其他資源

Visual Basic 中的物件和類別