Оператор Implements

Указывает один или несколько интерфейсов или членов интерфейса, которые должны быть реализованы в определении класса или структуры, в котором он отображается.

Синтаксис

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

Компоненты

interfacename
Обязательный. Интерфейс, свойства, процедуры и события которого реализуются соответствующими членами класса или структуры.

interfacemember
Обязательный. Член реализуемого интерфейса.

Remarks

Интерфейс — это коллекция прототипов, представляющих элементы (свойства, процедуры и события), инкапсулирует интерфейс. Интерфейсы содержат только объявления для членов; классы и структуры реализуют эти члены. Дополнительные сведения см. в статье Интерфейсы.

Оператор Implements должен немедленно следовать оператору или Structure операторуClass.

При реализации интерфейса необходимо реализовать все члены, объявленные в интерфейсе. Пропуск любого элемента считается синтаксической ошибкой. Для реализации отдельного элемента необходимо указать ключевое слово Implements (отдельное от Implements оператора) при объявлении элемента в классе или структуре. Дополнительные сведения см. в статье Интерфейсы.

Классы могут использовать частные реализации свойств и процедур, но эти члены доступны только путем приведения экземпляра класса реализации в переменную, объявленную как тип интерфейса.

Пример 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

В следующих двух процедурах показано, как можно использовать интерфейс, реализованный в предыдущем примере. Чтобы протестировать реализацию, добавьте эти процедуры в проект и вызовите процедуру 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

См. также раздел