Share via


Implements ステートメント

それが存在するクラスまたは構造体の定義に、実装する必要のある 1 つ以上のインターフェイス、つまりインターフェイス メンバーを指定します。

構文

Implements interfacename [, ...]  
' -or-  
Implements interfacename.interfacemember [, ...]  

指定項目

interfacename
必須です。 クラスまたは構造体に、対応するメンバーによって実装されるプロパティ、プロシージャ、およびイベントを持つインターフェイス。

interfacemember
必須です。 実装されるインターフェイスのメンバー。

Remarks

インターフェイスは、インターフェイスによってカプセル化されるメンバー (プロパティ、プロシージャ、およびイベント) を表すプロトタイプのコレクションです。 インターフェイスには、メンバーの宣言のみが含まれます。クラスと構造体で、これらのメンバーを実装します。 詳細については、「インターフェイス」を参照してください。

Implements ステートメントは、Class または Structure ステートメントの直後に記述する必要があります。

インターフェイスを実装する場合は、インターフェイスで宣言されたすべてのメンバーを実装する必要があります。 メンバーを省略すると、構文エラーと見なされます。 個々のメンバーを実装するには、クラスまたは構造体でメンバーを宣言するときに、Implements キーワード (Implements ステートメントとは別) を指定します。 詳細については、「インターフェイス」を参照してください。

クラスでは、プロパティとプロシージャの Private 実装を使用できますが、インターフェイスの型として宣言された変数に、実装するクラスのインスタンスをキャストすることによってのみ、これらのメンバーにアクセスできます。

例 1

次の例は、Implements ステートメントを使用して、インターフェイスのメンバーを実装する方法を示しています。 これは、イベント、プロパティ、およびプロシージャを含む ICustomerInfo という名前のインターフェイスを定義しています。 クラス customerInfo では、インターフェイスで定義されているすべてのメンバーを実装します。

Public Interface ICustomerInfo
    Event UpdateComplete()
    Property CustomerName() As String
    Sub UpdateCustomerStatus()
End Interface

Public Class customerInfo
    Implements ICustomerInfo
    ' Storage for the property value.
    Private customerNameValue As String
    Public Event UpdateComplete() Implements ICustomerInfo.UpdateComplete
    Public Property CustomerName() As String _
        Implements ICustomerInfo.CustomerName
        Get
            Return customerNameValue
        End Get
        Set(ByVal value As String)
            ' The value parameter is passed to the Set procedure
            ' when the contents of this property are modified.
            customerNameValue = value
        End Set
    End Property

    Public Sub UpdateCustomerStatus() _
        Implements ICustomerInfo.UpdateCustomerStatus
        ' Add code here to update the status of this account.
        ' Raise an event to indicate that this procedure is done.
        RaiseEvent UpdateComplete()
    End Sub
End Class

クラス customerInfo では、別のソース コード行で Implements ステートメントを使用して、クラスで ICustomerInfo インターフェイスのすべてのメンバーを実装していることを示していることに注意してください。 次に、クラスの各メンバーで、そのメンバー宣言の一部として Implements キーワードを使用して、そのインターフェイス メンバーを実装していることを示しています。

例 2

次の 2 つのプロシージャでは、前の例で実装したインターフェイスを使用する方法を示しています。 実装をテストするには、これらのプロシージャをプロジェクトに追加し、testImplements プロシージャを呼び出します。

Public Sub TestImplements()
    ' This procedure tests the interface implementation by
    ' creating an instance of the class that implements ICustomerInfo.
    Dim cust As ICustomerInfo = New customerInfo()
    ' Associate an event handler with the event that is raised by
    ' the cust object.
    AddHandler cust.UpdateComplete, AddressOf HandleUpdateComplete
    ' Set the CustomerName Property
    cust.CustomerName = "Fred"
    ' Retrieve and display the CustomerName property.
    MsgBox("Customer name is: " & cust.CustomerName)
    ' Call the UpdateCustomerStatus procedure, which raises the
    ' UpdateComplete event.
    cust.UpdateCustomerStatus()
End Sub

Sub HandleUpdateComplete()
    ' This is the event handler for the UpdateComplete event.
    MsgBox("Update is complete.")
End Sub

関連項目