访问接口2

类对接口的实现

  前面我们已经说过,接口定义不包括方法的实现部分。接口可以通过类或结构来实现。我们主要讲述通过类来实现接口。用类来实现接口时,接口的名称必须包含在类定义中的基类列表中。

  下面的例子给出了由类来实现接口的例子。其中ISequence 为一个队列接口,提供了向队列尾部添加对象的成员方法Add( ),IRing 为一个循环表接口,提供了向环中插入对象的方法Insert(object obj),方法返回插入的位置。类RingSquence 实现了接口ISequence 和接口IRing。

using System ;
interface ISequence {
 object Add( ) ;
}
interface ISequence {
 object Add( ) ;
}
interface IRing {
 int Insert(object obj) ;
}
class RingSequence: ISequence, IRing
{
 public object Add( ) {…}
 public int Insert(object obj) {…}
}

  如果类实现了某个接口,类也隐式地继承了该接口的所有父接口,不管这些父接口有没有在类定义的基类表中列出。看下面的例子:

using System ;
interface IControl {
 void Paint( );
}
interface ITextBox: IControl {
 void SetText(string text);
}
interface IListBox: IControl {
 void SetItems(string[] items);
}
interface IComboBox: ITextBox, IListBox { }

  这里, 接口IcomboBox继承了ItextBox和IlistBox。类TextBox不仅实现了接口ITextBox,还实现了接口ITextBox 的父接口IControl。

  前面我们已经看到,一个类可以实现多个接口。再看下面的例子:

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

  类EditBox从类Control中派生并且实现了Icontrol和IdataBound。在前面的例子中接口Icontrol中的Paint方法和IdataBound接口中的Bind方法都用类EditBox中的公共成员实现。C#提供一种实现这些方法的可选择的途径,这样可以使执行这些的类避免把这些成员设定为公共的。接口成员可以用有效的名称来实现。例如,类EditBox可以改作方法Icontrol.Paint和IdataBound.Bind来来实现。

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

  因为通过外部指派接口成员实现了每个成员,所以用这种方法实现的成员称为外部接口成员。外部接口成员可以只是通过接口来调用。例如,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#的接口,请看下一节-实现接口
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C post访问接口是一种HTTP请求方法,用于向服务器提交数据并创建新资源。当我们向服务器发送POST请求时,我们需要提供数据,并且该数据通常会被服务器存储在数据库中或通过其他途径进行处理。下面是关于C post访问接口的一些重要信息: 首先,C post访问接口是一种安全的HTTP请求方法,因为它可以确保数据的安全性。与GET请求不同,POST请求将数据包含在请求体中,而不是URL中,这意味着数据不会被暴露在URL上。这对于包含敏感信息的请求非常重要。 其次,C post访问接口可以用于创建新资源。通过将数据传递给服务器,我们可以在服务器上创建新的数据实体。例如,在一个博客网站中,我们可以使用C post访问接口来发布新的博客文章。 另外,C post访问接口通常需要使用表单数据格式进行请求。我们可以将数据通过表单进行封装,并将其发送到服务器,以便服务器可以正确地解析和处理数据。这对于处理用户的登录、注册或提交订单等操作非常有用。 最后,C post访问接口一般会返回一个响应,该响应包含了服务器对请求的处理结果。服务器可以返回各种不同的响应状态码,以指示请求的成功与否。客户端可以根据响应的状态码来采取不同的行动,例如,显示成功或错误消息。 总之,C post访问接口是一种重要的HTTP请求方法,可用于向服务器提交数据并创建新资源。它通过请求体传递数据,可以保证数据的安全性,并且通常需要使用表单数据格式进行请求。服务器对请求进行处理后会返回一个响应,供客户端判断请求的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值