Оператор Implements

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

Синтаксис

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

Компоненты

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

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

Комментарии

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

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

При реализации интерфейса необходимо реализовать все члены, объявленные в интерфейсе. Пропуск любого члена считается синтаксической ошибкой. Для реализации отдельного элемента необходимо указать ключевое слово 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

См. также