クラスの名前を宣言し、クラスが構成する変数、プロパティ、イベント、およびプロシージャの定義を導入します。
構文
[ <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
こちらも参照ください
.NET