Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Интерфейсы описывают характеристики свойств, методов и событий, но оставляют реализацию на усмотрение структур или классов.
В этом пошаговом руководстве показано, как объявить и реализовать интерфейс.
Замечание
В этом пошаговом руководстве не содержатся сведения о создании пользовательского интерфейса.
Замечание
На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса Visual Studio в следующих инструкциях. Выпуск Visual Studio, который у вас есть, и параметры, которые вы используете, определяют эти элементы. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.
Определение интерфейса
Откройте новый проект приложения Windows Visual Basic.
Добавьте новый модуль в проект, нажав кнопку "Добавить модуль " в меню "Проект ".
Назовите новый модуль
Module1.vb
и нажмите кнопку "Добавить". Отображается код нового модуля.Определите интерфейс с именем
TestInterface
в пределахModule1
, вставивInterface TestInterface
между инструкциямиModule
иEnd Module
, а затем нажмите клавишу ENTER. Редактор кода отступит ключевоеInterface
слово и добавляетEnd Interface
инструкцию для формирования блока кода.Определите свойство, метод и событие для интерфейса, поместив следующий код между операторами
Interface
иEnd Interface
.Property Prop1() As Integer Sub Method1(ByVal X As Integer) Event Event1()
Внедрение
Вы можете заметить, что синтаксис, используемый для объявления членов интерфейса, отличается от синтаксиса, используемого для объявления членов класса. Это различие отражает тот факт, что интерфейсы не могут содержать код реализации.
Реализация интерфейса
Добавьте класс с именем
ImplementationClass
, добавив следующую инструкцию вModule1
, после инструкцииEnd Interface
, но перед инструкциейEnd Module
, а затем нажмите клавишу ВВОД.Class ImplementationClass
Если вы работаете в интегрированной среде разработки, редактор кода предоставляет соответствующую
End Class
инструкцию при нажатии клавиши ВВОД.Добавьте следующую
Implements
инструкцию кImplementationClass
, которая указывает интерфейс, реализуемый классом:Implements TestInterface
При перечислении отдельно от других элементов в верхней части класса или структуры оператор
Implements
указывает, что класс или структура реализует интерфейс.Если вы работаете в интегрированной среде разработки, редактор кода реализует члены класса, необходимые
TestInterface
при нажатии клавиши ввод, и вы можете пропустить следующий шаг.Если вы не работаете в интегрированной среде разработки, необходимо реализовать все члены интерфейса
MyInterface
. Добавьте следующий код вImplementationClass
, чтобы реализоватьEvent1
,Method1
иProp1
.Event Event1() Implements TestInterface.Event1 Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1 End Sub Public Property Prop1() As Integer Implements TestInterface.Prop1 Get End Get Set(ByVal value As Integer) End Set End Property
Оператор
Implements
называет реализованный интерфейс и элемент интерфейса.Выполните определение
Prop1
, добавив частное поле в класс, который сохранил значение свойства:' Holds the value of the property. Private pval As Integer
Возвращает значение
pval
свойства get accessor.Return pval
Установите значение
pval
в аксессоре свойства.pval = value
Завершите определение
Method1
, добавив следующий код.MsgBox("The X parameter for Method1 is " & X) RaiseEvent Event1()
Тестирование реализации интерфейса
Щелкните правой кнопкой мыши форму запуска проекта в обозревателе решений и выберите команду "Просмотреть код". В редакторе отображается класс для стартовой формы. Форма запуска по умолчанию называется
Form1
.Добавьте следующее
testInstance
поле в классForm1
.Dim WithEvents testInstance As TestInterface
Объявляя
testInstance
какWithEvents
,Form1
класс может обрабатывать его события.Добавьте следующий обработчик событий в
Form1
класс для обработки событий, вызванныхtestInstance
:Sub EventHandler() Handles testInstance.Event1 MsgBox("The event handler caught the event.") End Sub
Добавьте подпрограмму с именем
Test
Form1
в класс для тестирования класса реализации:Sub Test() ' Create an instance of the class. Dim T As New ImplementationClass ' Assign the class instance to the interface. ' Calls to the interface members are ' executed through the class instance. testInstance = T ' Set a property. testInstance.Prop1 = 9 ' Read the property. MsgBox("Prop1 was set to " & testInstance.Prop1) ' Test the method and raise an event. testInstance.Method1(5) End Sub
Процедура
Test
создает экземпляр класса, реализующегоMyInterface
его, назначает этот экземплярtestInstance
полю, задает свойство и запускает метод через интерфейс.Добавьте код для вызова процедуры
Test
из процедурыForm1 Load
вашей формы запуска.Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Test() ' Test the class. End Sub
Выполните процедуру
Test
, нажав клавишу F5. Отображается сообщение "Prop1 установлен в значение 9". После нажатия кнопки "ОК" отображается сообщение "Параметр X для метода 1 равно 5". Нажмите кнопку "ОК" и отображается сообщение "Обработчик событий поймал событие".