Class ステートメント (Visual Basic)
クラスの名前を宣言し、クラスを構成する変数、プロパティ、イベント、およびプロシージャの定義を示します。
構文
[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] [ Partial ] _
Class name [ ( Of typelist ) ]
[ Inherits classname ]
[ Implements interfacenames ]
[ statements ]
End Class
指定項目
用語 | 定義 |
---|---|
attributelist |
任意。 「属性リスト」を参照してください。 |
accessmodifier |
任意。 次のいずれかの値を指定します。 - Public - Protected - Friend - Private - 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 |
任意。 このクラスが 1 つ以上のインターフェイスのメンバーを実装していることを示します。 「Implements ステートメント」を参照してください。 |
interfacenames |
Implements ステートメントを使用する場合は必ず指定します。 このクラスが実装するインターフェイスの名前です。 |
statements |
任意。 このクラスのメンバーを定義するステートメントです。 |
End Class |
必須です。 Class の定義を終了します。 |
Remarks
Class
ステートメントは新しいデータ型を定義します。 クラスは、オブジェクト指向プログラミング (OOP) の基本的な構成要素です。 詳細については、オブジェクトとクラスに関するページを参照してください。
Class
は、名前空間またはモジュール レベルでのみ使用できます。 つまり、クラスの宣言コンテキストは、ソース ファイル、名前空間、クラス、構造体、モジュール、またはインターフェイスのいずれかである必要があり、プロシージャまたはブロックでは宣言できません。 詳細については、「宣言コンテキストと既定のアクセス レベル」を参照してください。
クラスの各インスタンスには、他のインスタンスに依存しない独自の有効期間があります。 この有効期間は、New Operator 句によって、または CreateObject などの関数によって作成された時点で開始されます。 これは、インスタンスを指すすべての変数が、Nothing、または他のクラスのインスタンスに設定された時点で終了します。
クラスは、既定で Friend アクセスに設定されます。 アクセス修飾子を使用してこれらのアクセス レベルを調整できます。 詳しくは、「Visual Basic でのアクセス レベル」を参照してください。
ルール
入れ子。 クラスの内部に別のクラスを定義できます。 外側のクラスは、含まれているクラスと呼ばれ、内側のクラスは入れ子になったクラスと呼ばれます。
継承。 クラスが Inherits ステートメントを使用する場合、指定できる基底クラスまたはインターフェイスは 1 つだけです。 クラスは複数の要素からは継承できません。
クラスは、より制限の厳しいアクセス レベルを持つ別のクラスから継承することはできません。 たとえば、
Public
クラスはFriend
クラスから継承できません。クラスは、その中の入れ子にされたクラスから継承できません。
実装: クラスで Implements ステートメントを使用する場合、
interfacenames
に指定するすべてのインターフェイスによって定義されたすべてのメンバーを実装する必要があります。 この例外は、基底クラスのメンバーの再実装です。 詳細については、Implements に関するページの「再実装」を参照してください。既定のプロパティ。 クラスは、その既定のプロパティとして、最大で 1 つのプロパティを指定できます。 詳細については、「Default」を参照してください。
動作
アクセス レベル。 クラスの内部では、各メンバーを独自のアクセス レベルで宣言できます。 クラス メンバーは、既定で Private アクセスに設定される変数と定数を除き、既定で Public アクセスに設定されます。 クラスがそのメンバーのいずれかよりもアクセスが制限されている場合は、クラスのアクセス レベルが優先されます。
範囲。 クラスは、そこに含まれる名前空間、クラス、構造体、またはモジュールをスコープとします。
すべてのクラス メンバーのスコープは、クラス全体になります。
[Lifetime](有効期間)。 Visual Basic では、静的クラスをサポートしていません。 静的クラスに相当する機能は、モジュールによって提供されます。 詳細については、「Module ステートメント」を参照してください。
クラス メンバーの有効期間は、それを宣言する方法と場所で決まります。 詳しくは、「Visual Basic における有効期間」をご覧ください。
修飾。 クラスの外側にあるコードでは、メンバーの名前をそのクラスの名前で修飾する必要があります。
入れ子になったクラスの内側のコードでプログラミング要素を修飾なしで参照した場合、Visual Basic はその要素をまず入れ子になったクラスの内側で探し、その次に含まれているクラスの内側で探します。この手順が、最も外側のコンテナー要素にまで繰り返されます。
クラスとモジュール
これらの要素には多くの類似点がありますが、重要な相違点もいくつかあります。
用語。 以前のバージョンの Visual Basic では、クラス モジュール (.cls ファイル) と標準モジュール (.bas ファイル) の 2 種類のモジュールを認識します。 現在のバージョンでは、これらのクラスとモジュールをそれぞれ呼び出します。
共有メンバー。 クラスのメンバーが共有メンバーかインスタンス メンバーかを制御できます。
オブジェクト指向。 クラスはオブジェクト指向ですが、モジュールはそうではありません。 クラスの 1 つ以上のインスタンスを作成できます。 詳細については、オブジェクトとクラスに関するページを参照してください。
例
次の例では、Class
ステートメントを使用して 1 つのクラスといくつかのメンバーを定義します。
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