演练:创建和实现接口 (Visual Basic)
接口描述属性、方法和事件的特征,但将实现细节留给结构或类来处理。
本演练演示如何声明和实现接口。
注意
本演练不提供有关如何创建用户界面的信息。
注意
以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 这些元素取决于你所使用的 Visual Studio 版本和你所使用的设置。 有关详细信息,请参阅个性化设置 IDE。
定义接口
打开一个新的 Visual Basic Windows 应用程序项目。
在“项目”菜单中单击“添加模块”,将一个新模块添加到项目中。
将新模块命名为
Module1.vb
,然后单击“添加”。 此时将显示新模块的代码。通过在
Module
与End Module
语句之间键入Interface TestInterface
并按 ENTER,在Module1
中定义名为TestInterface
的接口。 代码编辑器会缩进Interface
关键字并添加End Interface
语句以形成代码块。通过在
Interface
与End Interface
语句之间添加以下代码来定义接口的属性、方法和事件:Property Prop1() As Integer Sub Method1(ByVal X As Integer) Event Event1()
实现
你可能已注意到,用于声明接口成员的语法与用于声明类成员的语法不同。 这种差异反映了接口不能包含实现代码这一事实。
实现接口
通过在
Module1
中End Interface
语句的后面、End Module
语句的前面添加以下语句,然后按 ENTER,来添加名为ImplementationClass
的类:Class ImplementationClass
如果在集成开发环境中操作,按 ENTER 后,代码编辑器会提供匹配的
End Class
语句。将以下
Implements
语句添加到ImplementationClass
,用于命名类实现的接口:Implements TestInterface
当与某个类或结构顶部的其他项分开列出时,
Implements
语句将指示该类或结构实现一个接口。如果在集成开发环境中操作,按 ENTER 后,代码编辑器会实现
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
从属性 get 访问器返回
pval
的值。Return pval
在属性 set 访问器中设置
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
字段,设置属性,并通过接口运行方法。添加代码以从启动窗体的
Form1 Load
过程调用Test
过程:Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Test() ' Test the class. End Sub
按 F5 运行
Test
过程。 此时将显示消息“Prop1 was set to 9”。 单击“确定”后,将显示消息“The X parameter for Method1 is 5”。 单击“确定”,随即会显示消息“The event handler caught the event”。