基于C#的接口基础教程之四(3)_.Net教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:基于C#的接口基础教程之三
  第三节 定义接口成员   接口可以包含一个和多个成员,这些成员可以是方法、属性、索引指示器和事件,但不能是常量、域、操作符、构造函数或析构函数,而且不能包含任何静态成员。接口定

  因为通过外部指派接口成员实现了每个成员,所以用这种方法实现的成员称为外部接口成员。外部接口成员可以只是通过接口来调用。例如,Paint方法中EditBox的实现可以只是通过创建Icontrol接口来调用。

class Test {
 static void Main( ) {
  EditBox editbox = new EditBox( );
  editbox.Paint( ); //错误: EditBox 没有Paint 事件
  IControl control = editbox;
  control.Paint( ); // 调用 EditBox的Paint事件
 }
}

  上例中,类EditBox 从Control 类继承并同时实现了IControl and IDataBound 接口。EditBox 中的Paint 方法来自IControl 接口,Bind 方法来自IDataBound 接口,二者在EditBox 类中都作为公有成员实现。当然,在C# 中我们也可以选择不作为公有成员实现接口。

  如果每个成员都明显地指出了被实现的接口,通过这种途径被实现的接口我们称之为显式接口成员(explicit interface member)。 用这种方式我们改写上面的例子:

public class EditBox: IControl, IDataBound {
 void IControl.Paint( ) {…}
 void IDataBound.Bind(Binder b) {…}
}

  显式接口成员只能通过接口调用。例如:

class CTest {
 static void Main( ) {
  EditBox editbox = new EditBox( ) ;
  editbox.Paint( ) ; //错误:不同的方法
  IControl control = editbox;
  control.Paint( ) ; //调用 EditBox的Paint方法
 }
}

  上述代码中对editbox.Paint( )的调用是错误的,因为editbox 本身并没有提供这一方法。control.Paint( )是正确的调用方式。

  注释:接口本身不提供所定义的成员的实现,它仅仅说明这些成员,这些成员必须依靠实现接口的类或其它接口的支持。

  知道了怎样访问接口,我们还要知道怎样实现接口,要实现C#的接口,请看下一节-实现接口

分享:基于C#的接口基础教程之二
  第二节 定义接口   从技术上讲,接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码可以调用组件对象的功能。   定义接口的一般形式为: [attributes] [m

共3页上一页123下一页
来源:模板无忧//所属分类:.Net教程/更新时间:2008-08-22
相关.Net教程