Implements ステートメント

更新 : 2007 年 11 月

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

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

指定項目

  • interfacename
    必ず指定します。インターフェイスを指定します。このインターフェイスのプロパティ、プロシージャ、およびイベントが、クラスまたは構造体の対応するメンバによって実装されます。

  • interfacemember
    必ず指定します。実装されるインターフェイスのメンバを指定します。

解説

インターフェイスは、インターフェイスによってカプセル化されるメンバ (プロパティ、プロシージャ、およびイベント) を表すプロトタイプの集合体です。インターフェイスには、メンバの宣言だけが含まれます。これらのメンバを実装するのは、クラスおよび構造体です。

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

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

クラスは、プロパティおよびプロシージャを Private (Visual Basic) で実装できますが、そうするとクラスのインスタンスをインターフェイスの型で宣言した変数にキャストしない限り、これらのメンバにアクセスできなくなります。

使用例

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 クラスでは 1 行のソース コードに Implements ステートメントを定義し、そのクラスが ICustomerInfo インターフェイスのすべてのメンバを実装することを示しています。その後、クラスの各メンバにおいて、メンバ宣言に Implements キーワードを指定し、そのインターフェイスのメンバが実装されることを示しています。

実装されたインターフェイスを使用する 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

参照

概念

Visual Basic のポリモーフィズムのしくみ

参照

Implements (Visual Basic)

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

その他の技術情報

Visual Basic におけるインターフェイス

ポリモーフィズム