チュートリアル: インターフェイスの作成と実装 (Visual Basic)
インターフェイスには、プロパティ、メソッド、およびイベントの特性が記述されていますが、実装の詳細は構造体またはクラスに委ねられています。
このチュートリアルでは、インターフェイスを宣言し、実装する方法について説明します。
Note
このチュートリアルでは、ユーザー インターフェイスの作成方法については説明しません。
注意
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「IDE をカスタマイズする」をご覧ください。
インターフェイスを定義するには
新しい Visual Basic Windows アプリケーション プロジェクトを開きます。
[プロジェクト] メニューの [モジュールの追加] をクリックして、プロジェクトに新しいモジュールを追加します。
新しいモジュールに
Module1.vb
という名前を付け、 [追加] をクリックします。 新しいモジュールのコードが表示されます。Module
ステートメントとEnd Module
ステートメントの間にInterface TestInterface
と入力し、ENTER キーを押して、Module1
内にTestInterface
という名前のインターフェイスを定義します。 コード エディターによってInterface
キーワードがインデントされ、End Interface
ステートメントが追加されて、コード ブロックが形成されます。Interface
ステートメントとEnd Interface
ステートメントの間に次のコードを配置して、インターフェイスのプロパティ、メソッド、およびイベントを定義します。Property Prop1() As Integer Sub Method1(ByVal X As Integer) Event Event1()
実装
インターフェイス メンバーを宣言するために使用する構文は、クラス メンバーを宣言するために使用する構文とは異なるので注意してください。 この差異は、インターフェイスに実装コードを含めることができないという事実を反映しています。
インターフェイスを実装するには
Module1
に次のステートメントを追加し、ENTER キーを押して、ImplementationClass
という名前のクラスを追加します。追加する場所は、End Interface
ステートメントの後で、End Module
ステートメントの前です。Class ImplementationClass
統合開発環境内で作業している場合は、ENTER キーを押すと、コード エディターによって対応する
End Class
ステートメントが提供されます。次の
Implements
ステートメントをImplementationClass
に追加します。これにより、クラスで実装するインターフェイスに名前が付けられます。Implements TestInterface
Implements
ステートメントが、クラスまたは構造体の先頭にある他の項目とは別にリストされている場合、そのステートメントは、クラスまたは構造体がインターフェイスを実装していることを示します。統合開発環境内で作業している場合は、ENTER キーを押すと、コード エディターによって
TestInterface
に必要なクラス メンバーが実装され、次の手順をスキップできます。統合開発環境内で作業していない場合は、
MyInterface
インターフェイスのすべてのメンバーを実装する必要があります。 次のコードをImplementationClass
に追加して、Event1
、Method1
、およびProp1
を実装します。Event Event1() Implements TestInterface.Event1 Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1 End Sub Public Property Prop1() As Integer Implements TestInterface.Prop1 Get End Get Set(ByVal value As Integer) End Set End Property
Implements
ステートメントで、実装するインターフェイスとインターフェイス メンバーの名前を指定します。プロパティ値を格納したプライベート フィールドをクラスに追加して、
Prop1
の定義を完了します。' Holds the value of the property. Private pval As Integer
プロパティの get アクセサーで
pval
の値を取得します。Return pval
プロパティの set アクセサーで
pval
の値を設定します。pval = value
次のコードを追加して、
Method1
の定義を完了します。MsgBox("The X parameter for Method1 is " & X) RaiseEvent Event1()
インターフェイスの実装をテストするには
ソリューション エクスプローラーでプロジェクトのスタートアップ フォームを右クリックし、 [コードの表示] をクリックします。 エディターにスタートアップ フォームのクラスが表示されます。 既定では、スタートアップ フォームは
Form1
という名前です。次の
testInstance
フィールドをForm1
クラスに追加します。Dim WithEvents testInstance As TestInterface
testInstance
をWithEvents
として宣言することで、Form1
クラスがそのイベントを処理できるようになります。testInstance
によって発生するイベントを処理するために、次のイベント ハンドラーをForm1
クラスに追加します。Sub EventHandler() Handles testInstance.Event1 MsgBox("The event handler caught the event.") End Sub
実装クラスをテストするために、
Test
という名前のサブルーチンをForm1
クラスに追加します。Sub Test() ' Create an instance of the class. Dim T As New ImplementationClass ' Assign the class instance to the interface. ' Calls to the interface members are ' executed through the class instance. testInstance = T ' Set a property. testInstance.Prop1 = 9 ' Read the property. MsgBox("Prop1 was set to " & testInstance.Prop1) ' Test the method and raise an event. testInstance.Method1(5) End Sub
Test
プロシージャは、MyInterface
を実装するクラスのインスタンスを作成し、そのインスタンスをtestInstance
フィールドに割り当て、プロパティを設定し、インターフェイスを介してメソッドを実行します。スタートアップ フォームの
Form1 Load
プロシージャからTest
プロシージャを呼び出すコードを追加します。Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Test() ' Test the class. End Sub
F5 キーを押して、
Test
プロシージャを実行します。 "Prop1 が 9 に設定されました" というメッセージが表示されます。 [OK] をクリックします。クリック後、"The X parameter for Method1 is 5 (Method1 の X パラメーターは 5 です)" というメッセージが表示されます。 [OK] をクリックします。"The event handler caught the event (イベント ハンドラーがイベントをキャッチしました)" というメッセージが表示されます。
関連項目
.NET