Class ステートメント (Visual Basic)
クラスの名前を宣言し、そのクラスを構成する変数、プロパティ、イベント、およびプロシージャの定義を示します。
[ <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 |
省略可能です。このクラスが、1 つ以上のインターフェイスのメンバーを実装していることを示します。「Implements ステートメント」を参照してください。 |
interfacenames |
Implements ステートメントを使用する場合は必ず指定します。このクラスが実装するインターフェイスの名前を指定します。 |
statements |
省略可能です。このクラスのメンバーを定義するステートメントを指定します。 |
End Class |
必ず指定します。Class 定義を終了します。 |
解説
Class ステートメントは新しいデータ型を定義します。クラスはオブジェクト指向プログラミング (OOP: Object-Oriented Programming) の基本的なビルド ブロックです。詳細については、「Visual Basic のオブジェクトとクラス」を参照してください。
Class は、名前空間またはモジュール レベルでのみ使用できます。つまり、クラスの宣言コンテキストは、ソース ファイル、名前空間、クラス、構造体、モジュール、またはインターフェイスのいずれかである必要があり、プロシージャまたはブロックでは宣言できません。詳細については、「宣言コンテキストと既定のアクセス レベル (Visual Basic)」を参照してください。
クラスの各インスタンスは、他のインスタンスからは独立した有効期間を持ちます。インスタンスの有効期間は、New 演算子 (Visual Basic) 句または CreateObject などの関数で作成されたときに開始します。インスタンスを参照している変数がすべて Nothing (Visual Basic) に設定されるか、他のクラスのインスタンスに設定されると、インスタンスの有効期間は終了します。
既定では、クラスのアクセス レベルは Friend (Visual Basic) です。アクセス修飾子を使用してこれらのアクセス レベルを調整できます。詳細については、「Visual Basic でのアクセス レベル」を参照してください。
規則
**入れ子。**クラス内に別のクラスを定義できます。外側のクラスは包含クラス、内側のクラスは入れ子クラスと呼ばれます。
**継承。**クラスが Inherits ステートメントを使用している場合は、1 つの基本クラスまたはインターフェイスのみを指定できます。複数の要素を継承することはできません。
自分よりもアクセス レベルの厳しいクラスは継承できません。たとえば、Public クラスは Friend クラスを継承できません。
中に入れ子になったクラスは継承できません。
**実装。**クラスが Implements ステートメントを使用している場合は、interfacenames に指定したすべてのインターフェイスで定義されているメンバーをすべて実装する必要があります。ただし、基本クラスのメンバーを再実装する必要はありません。詳細については、「Implements 句 (Visual Basic)」の「再実装」を参照してください。
**既定のプロパティ。**クラス内の最大 1 つのプロパティを既定のプロパティとして指定できます。詳細については、「Default (Visual Basic)」を参照してください。
[動作]
**アクセス レベル。**クラス内では、それぞれのメンバーにアクセス レベルを宣言できます。変数と定数を除くクラス メンバーは既定で Public (Visual Basic) アクセスになります。変数と定数は既定で Private (Visual Basic) アクセスになります。クラスのアクセス レベルの方がメンバーのアクセス レベルよりも厳しいときは、クラスのアクセス レベルが優先されます。
**スコープ。**クラスのスコープは、そのクラスを含んでいる名前空間、クラス、構造体、またはモジュールになります。
すべてのクラス メンバーのスコープは、クラス全体になります。
**有効期間。**Visual Basic は静的クラスをサポートしません。静的クラスと同等の機能はモジュールで実現されます。詳細については、「Module ステートメント」を参照してください。
クラス メンバーの有効期間は、宣言された方法と場所によって左右されます。詳細については、「Visual Basic における有効期間」を参照してください。
**修飾。**クラス外部のコードがメンバーにアクセスするときには、メンバー名をクラス名で修飾する必要があります。
入れ子クラスの内部のコードがプログラミング要素に対する非修飾参照を行った場合、Visual Basic は目的の要素をまず入れ子クラス内で検索し、次にそのコンテナー クラス内で検索し、同様にして一番外側のコンテナー要素まで検索します。
クラスとモジュール
これらの要素はよく似ていますが、重要な相違点がいくつかあります。
**用語。**以前のバージョンの Visual Basic には、クラス モジュール (.cls ファイル) と標準モジュール (.bas ファイル) という 2 種類のモジュールがありました。現在のバージョンでは、これらをそれぞれクラスとモジュールと呼びます。
**共有メンバー。**クラスのメンバーを共有メンバーにするかインスタンス メンバーにするかを制御できます。
**オブジェクト指向。**クラスはオブジェクト指向ですが、モジュールはオブジェクト指向ではありません。クラスについては 1 つ以上のインスタンスを作成できます。詳細については、「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
参照
処理手順
方法: ジェネリック クラスを使用する (Visual Basic)
関連項目
Interface ステートメント (Visual Basic)
概念
オブジェクトの有効期間: オブジェクトの作成と破棄 (Visual Basic)
Visual Basic におけるジェネリック型 (Visual Basic)