次の方法で共有


Class ステートメント (Visual Basic)

クラスの名前を宣言し、クラスが構成する変数、プロパティ、イベント、およびプロシージャの定義を導入します。

構文

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

部品

任期 定義
attributelist 任意。 属性リストを参照してください
accessmodifier 任意。 次のいずれかを指定できます。

- 公共
- 保護
- 友人
- プライベート
- 保護されたフレンド
- Private Protected

Visual Basic のアクセス レベルを参照してください。
Shadows 任意。 「 影」を参照してください。
MustInherit 任意。 MustInherit を参照してください。
NotInheritable 任意。 NotInheritable を参照してください。
Partial 任意。 クラスの部分的な定義を示します。 部分を参照してください。
name 必須。 このクラスの名前。 「宣言された要素名」を参照してください。
Of 任意。 これがジェネリック クラスであることを指定します。
typelist Of キーワードを使用する場合は必須です。 このクラスの型パラメーターの一覧。 型リストを参照してください。
Inherits 任意。 このクラスが別のクラスのメンバーを継承することを示します。 「 Inherits ステートメント」を参照してください。
classname Inherits ステートメントを使用する場合は必須です。 このクラスの派生元のクラスの名前。
Implements 任意。 このクラスが 1 つ以上のインターフェイスのメンバーを実装することを示します。 「 Implements ステートメント」を参照してください。
interfacenames Implements ステートメントを使用する場合は必須です。 このクラスが実装するインターフェイスの名前。
statements 任意。 このクラスのメンバーを定義するステートメント。
End Class 必須。 Class定義を終了します。

注釈

Class ステートメントは、新しいデータ型を定義します。 クラスは、オブジェクト指向プログラミング (OOP) の基本的な構成要素です。 詳細については、「 オブジェクトとクラス」を参照してください。

Classは、名前空間またはモジュール レベルでのみ使用できます。 つまり、クラスの 宣言コンテキスト はソース ファイル、名前空間、クラス、構造体、モジュール、またはインターフェイスである必要があり、プロシージャまたはブロックにすることはできません。 詳細については、「 宣言コンテキストと既定のアクセス レベル」を参照してください。

クラスの各インスタンスには、他のすべてのインスタンスに依存しない有効期間があります。 この有効期間は、 New Operator 句または CreateObject などの関数によって作成されたときに開始されます。 インスタンスを指すすべての変数が Nothing または他のクラスのインスタンスに設定されると終了します。

クラスの既定値は Friend アクセスです。 アクセス修飾子を使用してアクセス レベルを調整できます。 詳細については、「 Visual Basic のアクセス レベル」を参照してください。

準則

  • ネスティング。 別のクラス内で 1 つのクラスを定義できます。 外側のクラスは 包含クラスと呼ばれ、内部クラスは 入れ子になったクラスと呼ばれます。

  • 継承。 クラスで Inherits ステートメントを使用する場合は、基底クラスまたはインターフェイスを 1 つだけ指定できます。 クラスは、複数の要素から継承できません。

    クラスは、より制限の厳しいアクセス レベルを持つ別のクラスから継承できません。 たとえば、 Public クラスは Friend クラスから継承できません。

    クラスは、その中に入れ子になったクラスから継承できません。

  • 実装。 クラスで Implements ステートメントを使用する場合は、 interfacenamesで指定するすべてのインターフェイスで定義されているすべてのメンバーを実装する必要があります。 これに対する例外は、基底クラスメンバーの再実装です。 詳細については、「 実装」の「再実装」を参照してください。

  • 既定のプロパティ。 クラスは、既定のプロパティとして最大 1 つの プロパティを指定できます。 詳細については、「 既定値」を参照してください。

行動

  • アクセス レベル。 クラス内では、各メンバーを独自のアクセス レベルで宣言できます。 クラス メンバーは既定で パブリック アクセスになりますが、変数と定数は除き、既定では プライベート アクセスになります。 クラスのアクセスが、そのメンバーの 1 つよりも制限されている場合は、クラスのアクセス レベルが優先されます。

  • 範囲。 クラスは、含まれる名前空間、クラス、構造体、またはモジュール全体のスコープ内にあります。

    すべてのクラス メンバーのスコープは、クラス全体です。

    一生。 Visual Basic では、静的クラスはサポートされていません。 静的クラスと同等の機能は、モジュールによって提供されます。 詳細については、「 Module ステートメント」を参照してください。

    クラス メンバーは、宣言の方法と場所に応じて有効期間を持ちます。 詳細については、「 Visual Basic の有効期間」を参照してください。

  • 資格。 クラス外のコードでは、メンバーの名前をそのクラスの名前で修飾する必要があります。

    入れ子になったクラス内のコードがプログラミング要素への非修飾参照を行う場合、Visual Basic は、入れ子になったクラスで最初に要素を検索し、次にその包含クラスで、最も外側の包含要素に対して検索します。

クラスとモジュール

これらの要素には多くの類似点がありますが、いくつかの重要な違いもあります。

  • 用語。 以前のバージョンの Visual Basic では、 クラス モジュール (.cls ファイル) と標準モジュール (.bas ファイル) の 2 種類 のモジュール が認識されます。 現在のバージョンでは、これらの クラスモジュールがそれぞれ呼び出されます。

  • 共有メンバー。 クラスのメンバーが共有メンバーかインスタンス メンバーかを制御できます。

  • オブジェクトの向き。 クラスはオブジェクト指向ですが、モジュールはオブジェクト指向ではありません。 クラスの 1 つ以上のインスタンスを作成できます。 詳細については、「 オブジェクトとクラス」を参照してください。

次の例では、 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

こちらも参照ください