对于.NET中接口的理解
2007-03-07 18:29
417 查看
MSDN中接口的概述: 和类一样,接口也定义了一系列的属性,方法,和事件。但是与类不同的是,接口并不提供实现。它们由类来实现,并从类中被定义为单独的实体。接口表示一种约定,实现接口的类必须严格按照其定义来实现接口的每个方面。有了接口,就可以将功能定义为一些紧密地相关成员的小组。可以在不危害有代码的情况下。开发接口的增强型实现,从而使兼容性问题最小化。也可以在任何时候通过开发附加接口和实现来添加新的功能。虽然接口实现可以进化,但接口本身一旦被发布就不能再更改。对已发布的借口进行更改会破坏现有的代码。若把接口视为约定,很明显约定双方都各有其承担的义务。接口的发布者同意不在更改接口,接口的实现者则同意严格按照设计来实现接口。
在项目开发过程中:你们的项目经理写好了一大堆接口,然后对你们说:OK,你们的工作就是写代码实现我的接口。这时候,在.NET中往往用类来实现接口。。
以下是msdn上面的材料
本演练将说明如何声明和实现一个接口。
定义一个接口
通过在“文件”菜单上单击“新建”,然后单击“项目”,打开一个新的“Windows 应用程序”项目。将出现“新建项目”对话框。
在“项目类型”窗格中选择“Visual Basic 项目”。
从 Visual Basic 项目模板的列表中选择“Windows 应用程序”。
通过单击“项目”菜单上的“添加模块”向属性中添加一个新的模块。
将新的模块命名为
在
通过在 Interface 和 End Interface 语句之间放置以下代码,定义该接口的属性、方法和事件:
您可能注意到,用于声明接口成员的语法与用于声明类成员的语法是不同的。这一差别反映了这样一个事实,即接口不能包含实现代码。
实现接口
将以下代码添加到
如果您使用的是集成开发环境,按下 ENTER 键时代码编辑器将提供一条相应的
将以下 Implements 语句添加到
当在类或结构顶部分别列出了其他项的 Implements 语句时,该语句表示类或结构将实现某个接口。如果您使用的是集成开发环境,代码编辑器会在
将以下代码添加到
该代码包含一个用于实现
将以下代码添加到
对于该代码中要实现的每个成员,都有一个表示接口和要实现的成员名称的 Implements 语句。
测试接口的实现
在“解决方案资源管理器”中,右击项目的启动窗体,并单击“查看代码”。编辑器将显示启动窗体的类。默认情况下,启动窗体称作
将以下事件处理程序添加到
将一个命名为
添加代码可以从启动窗体的
按 F5 键运行
在项目开发过程中:你们的项目经理写好了一大堆接口,然后对你们说:OK,你们的工作就是写代码实现我的接口。这时候,在.NET中往往用类来实现接口。。
以下是msdn上面的材料
演练:创建和实现接口
接口描述了属性、方法和事件的特性,但是却将实现的细节留给了结构或类。本演练将说明如何声明和实现一个接口。
定义一个接口
通过在“文件”菜单上单击“新建”,然后单击“项目”,打开一个新的“Windows 应用程序”项目。将出现“新建项目”对话框。
在“项目类型”窗格中选择“Visual Basic 项目”。
从 Visual Basic 项目模板的列表中选择“Windows 应用程序”。
通过单击“项目”菜单上的“添加模块”向属性中添加一个新的模块。
将新的模块命名为
Module1.vb并单击“打开”。显示该新模块的代码。
在
Module1内,通过在 Module 和 End Module 语句之间键入
Interface MyInterface,然后按 ENTER 键来定义一个名为
MyInterface的接口。代码编辑器将缩进 Interface 关键字并添加一个 End Interface 语句以形成代码块。
通过在 Interface 和 End Interface 语句之间放置以下代码,定义该接口的属性、方法和事件:
Property Prop1() As Integer Sub Method1(ByVal X As Integer) Event Event1()
您可能注意到,用于声明接口成员的语法与用于声明类成员的语法是不同的。这一差别反映了这样一个事实,即接口不能包含实现代码。
实现接口
将以下代码添加到
Module1中的
End Interface语句之后,但在
End Module语句之前,从而添加名为
ImplementationClass的类,然后按下 ENTER 键:
Class ImplementationClass
如果您使用的是集成开发环境,按下 ENTER 键时代码编辑器将提供一条相应的
End Class语句。
将以下 Implements 语句添加到
ImplementationClass中,这一操作将命名该类实现的接口:
Implements MyInterface
当在类或结构顶部分别列出了其他项的 Implements 语句时,该语句表示类或结构将实现某个接口。如果您使用的是集成开发环境,代码编辑器会在
MyInterface下添加下划线,警告您该类必须实现
MyInterface接口的所有成员。此演练中的下两个步骤将根据这条警告实现这些成员。
将以下代码添加到
ImplementationClass中以实现
Event1。
Event Event1() Implements MyInterface.Event1
该代码包含一个用于实现
Event1的 Event 语句,以及一个命名该接口和要实现的接口成员的 Implements 语句。
将以下代码添加到
ImplementationClass中以实现接口的剩余成员:
Private pval As Integer ' Holds the value of the property. Property Prop1() As Integer Implements MyInterface.Prop1 Get Return pval End Get Set(ByVal Value As Integer) pval = Value End Set End Property Sub Method1(ByVal X As Integer) Implements MyInterface.Method1 MsgBox("The X parameter for Method1 is " & X) RaiseEvent Event1() ' Add more code to implement this method. End Sub
对于该代码中要实现的每个成员,都有一个表示接口和要实现的成员名称的 Implements 语句。
测试接口的实现
在“解决方案资源管理器”中,右击项目的启动窗体,并单击“查看代码”。编辑器将显示启动窗体的类。默认情况下,启动窗体称作
Form1。
将以下事件处理程序添加到
Form1类中,以处理
ImplementationClass的实例引发的事件:
Sub EventHandler() MsgBox("The event handler caught the event.") End Sub
将一个命名为
Test的子例程添加到
Form1类中以测试实现类:
Sub Test() ' Create an instance of the class. Dim T As New ImplementationClass() ' Create a variable of type MyInterface. Dim I As MyInterface ' Assign the class instance to the interface. ' Calls to the interface members are ' executed through the class instance. I = T ' Associate an event handler with an event raised by the object. AddHandler I.Event1, AddressOf EventHandler I.Prop1 = 9 'Set a property. MsgBox("Prop1 was set to " & I.Prop1) ' Read the property. ' Test the method and raise an event. I.Method1(5) End Sub
Test过程可创建实现
MyInterface的类的一个实例,创建一个接口类型的变量,将事件处理程序与由实例引发的事件关联,设置属性并通过接口运行一个方法。
添加代码可以从启动窗体的
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”。
相关文章推荐
- 对于微软推出的.NET的理解
- 对于java中接口的理解
- 对于.NET中的NMake和Makefile的理解。
- java 中对于接口的理解和我对java 的一些理解
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- 对于父类上转型和接口回调的理解
- .NET中IDisposable接口概念的理解
- 对接口的理解~(.net 回复论坛)
- .Net中的设计模式——Iterator模式(对理解IEnumerable接口有帮助)
- 对于为什么要使用接口的个人理解
- 软件中的"合同"---.net 接口理解
- 自己对于IEnumerable接口的理解
- 对于java中接口的作用与理解
- 我理解的.net中的接口
- 对于 抽象类 接口 的理解
- 对于接口回调的简单理解
- 对于Android中接口回调机制的理解
- 对于接口的理解
- 对于HTTPServlet接口的理解
- 深入理解Java的接口和抽象类