Оператор Implements
Указывает один или несколько интерфейсов или элементов интерфейса, которые должны быть реализованы в определении класса или структуры, в котором она отображается.
Синтаксис
Implements interfacename [, ...]
' -or-
Implements interfacename.interfacemember [, ...]
Детали
interfacename
Обязательный. Интерфейс, свойства, процедуры и события которого реализуются соответствующими членами класса или структуры.
interfacemember
Обязательный. Член реализуемого интерфейса.
Замечания
Интерфейс представляет собой коллекцию прототипов, представляющих элементы (свойства, процедуры и события), инкапсулирует интерфейс. Интерфейсы содержат только объявления для членов; классы и структуры реализуют эти элементы. Дополнительные сведения см. в статье Интерфейсы.
Оператор Implements
должен немедленно следовать инструкции или Structure
инструкцииClass
.
При реализации интерфейса необходимо реализовать все члены, объявленные в интерфейсе. Опущение любого члена считается синтаксической ошибкой. Чтобы реализовать отдельный элемент, необходимо указать ключевое слово Реализации (отдельно от 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