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

インターフェイスはプロパティ、メソッド、およびイベントの特性を記述しますが、その実装の詳細は構造体やクラスに依存しています。

このチュートリアルでは、インターフェイスの宣言および実装の方法を説明します。

注意

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

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

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

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

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

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

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

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

実装

インターフェイス メンバーを宣言する構文は、クラス メンバーを宣言する構文と異なります。 この違いは、インターフェイスには実装コードを含めることができないという事実を表しています。

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

  1. Module1 に ImplementationClass という名前のクラスを追加します。End Interface ステートメントと End Module ステートメントの間に次のステートメントを追加し、Enter キーを押します。

    Class ImplementationClass
    

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

  2. 次の Implements ステートメントを ImplementationClass に追加します。これによって、クラスが実装するインターフェイスが指定されます。

    Implements TestInterface
    

    Implements ステートメントがクラスまたは構造体の先頭で他の項目と分かれて記述されている場合は、クラスまたは構造体がインターフェイスを実装することを意味します。

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

  3. 統合開発環境で作業している場合、インターフェイス 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 ステートメントは、実装されるインターフェイスとインターフェイスのメンバーの名前を指定します。

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

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

    pval の値を、プロパティの get アクセサーから返します。

    Return pval
    

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

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

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

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

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

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

    Dim WithEvents testInstance As TestInterface
    

    testInstance を WithEvents として宣言することで、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 was set to 9" というメッセージが表示されます。 [OK] をクリックすると、"The X parameter for Method1 is 5" というメッセージが表示されます。 [OK] をクリックすると、"The event handler caught the event" というメッセージが表示されます。

参照

参照

Implements ステートメント

Interface ステートメント (Visual Basic)

Event ステートメント

概念

インターフェイス (Visual Basic)