チュートリアル: インターフェイスの作成と実装 (Visual Basic)

インターフェイスには、プロパティ、メソッド、およびイベントの特性が記述されていますが、実装の詳細は構造体またはクラスに委ねられています。

このチュートリアルでは、インターフェイスを宣言し、実装する方法について説明します。

Note

このチュートリアルでは、ユーザー インターフェイスの作成方法については説明しません。

注意

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「IDE をカスタマイズする」をご覧ください。

インターフェイスを定義するには

  1. 新しい Visual Basic Windows アプリケーション プロジェクトを開きます。

  2. [プロジェクト] メニューの [モジュールの追加] をクリックして、プロジェクトに新しいモジュールを追加します。

  3. 新しいモジュールに Module1.vb という名前を付け、 [追加] をクリックします。 新しいモジュールのコードが表示されます。

  4. Module ステートメントと End Module ステートメントの間に Interface TestInterface と入力し、ENTER キーを押して、Module1 内に TestInterface という名前のインターフェイスを定義します。 コード エディターによって Interface キーワードがインデントされ、End Interface ステートメントが追加されて、コード ブロックが形成されます。

  5. Interface ステートメントと End Interface ステートメントの間に次のコードを配置して、インターフェイスのプロパティ、メソッド、およびイベントを定義します。

    Property Prop1() As Integer
    Sub Method1(ByVal X As Integer)
    Event Event1()
    

実装

インターフェイス メンバーを宣言するために使用する構文は、クラス メンバーを宣言するために使用する構文とは異なるので注意してください。 この差異は、インターフェイスに実装コードを含めることができないという事実を反映しています。

インターフェイスを実装するには

  1. Module1 に次のステートメントを追加し、ENTER キーを押して、ImplementationClass という名前のクラスを追加します。追加する場所は、End Interface ステートメントの後で、End Module ステートメントの前です。

    Class ImplementationClass
    

    統合開発環境内で作業している場合は、ENTER キーを押すと、コード エディターによって対応する End Class ステートメントが提供されます。

  2. 次の Implements ステートメントを ImplementationClass に追加します。これにより、クラスで実装するインターフェイスに名前が付けられます。

    Implements TestInterface
    

    Implements ステートメントが、クラスまたは構造体の先頭にある他の項目とは別にリストされている場合、そのステートメントは、クラスまたは構造体がインターフェイスを実装していることを示します。

    統合開発環境内で作業している場合は、ENTER キーを押すと、コード エディターによって TestInterface に必要なクラス メンバーが実装され、次の手順をスキップできます。

  3. 統合開発環境内で作業していない場合は、MyInterface インターフェイスのすべてのメンバーを実装する必要があります。 次のコードを ImplementationClass に追加して、Event1Method1、および 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 ステートメントで、実装するインターフェイスとインターフェイス メンバーの名前を指定します。

  4. プロパティ値を格納したプライベート フィールドをクラスに追加して、Prop1 の定義を完了します。

    ' Holds the value of the property.
    Private pval As Integer
    

    プロパティの get アクセサーで pval の値を取得します。

    Return pval
    

    プロパティの set アクセサーで pval の値を設定します。

    pval = value
    
  5. 次のコードを追加して、Method1 の定義を完了します。

    MsgBox("The X parameter for Method1 is " & X)
    RaiseEvent Event1()
    

インターフェイスの実装をテストするには

  1. ソリューション エクスプローラーでプロジェクトのスタートアップ フォームを右クリックし、 [コードの表示] をクリックします。 エディターにスタートアップ フォームのクラスが表示されます。 既定では、スタートアップ フォームは Form1 という名前です。

  2. 次の testInstance フィールドを Form1 クラスに追加します。

    Dim WithEvents testInstance As TestInterface
    

    testInstanceWithEvents として宣言することで、Form1 クラスがそのイベントを処理できるようになります。

  3. testInstance によって発生するイベントを処理するために、次のイベント ハンドラーを Form1 クラスに追加します。

    Sub EventHandler() Handles testInstance.Event1
        MsgBox("The event handler caught the event.")
    End Sub
    
  4. 実装クラスをテストするために、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 フィールドに割り当て、プロパティを設定し、インターフェイスを介してメソッドを実行します。

  5. スタートアップ フォームの 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
    
  6. F5 キーを押して、Test プロシージャを実行します。 "Prop1 が 9 に設定されました" というメッセージが表示されます。 [OK] をクリックします。クリック後、"The X parameter for Method1 is 5 (Method1 の X パラメーターは 5 です)" というメッセージが表示されます。 [OK] をクリックします。"The event handler caught the event (イベント ハンドラーがイベントをキャッチしました)" というメッセージが表示されます。

関連項目