本文向大家介绍C#类实现接口,可能好多人还不知道C#类实现接口,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。
C#类实现接口
前面我们已经说过,接口定义不包括方法的实现部分。接口可以通过类或结构来实现。我们主要讲述通过类来实现接口。用类来实现接口时,接口的名称必须包含在类定义中的基类列表中。
下面的例子给出了C#类实现接口的例子。其中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#提供一种实现这些方法的可选择的途径,这样可以使执行这些的类避免把这些成员设定为公共的。C#类实现接口成员可以用有效的名称。
【编辑推荐】