5.7C#引用类型之接口(Interface)

接口声明

interface 接口名<类型参数> {
}

接口 定义了可由类和结构实现的协定。 接口可以包含方法、属性、事件和索引器。 接口不提供所定义的成员的实现代码,仅指定必须由实现接口的类或结构提供的成员。

实现

class : 接口名称 {
}
struct : 接口名称 {
}

一个接口可以定义static方法,这些方法必须有一个实现。从 C# 8.0 开始,接口可以为成员定义默认实现。接口不能声明实例数据,例如字段、自动实现的属性或类似属性的事件。

类和结构可以实现多个接口。 在以下示例中,类 EditBox 同时实现 IControl 和 IDataBound

interface IDataBound
{
    void Bind(Binder b);
}

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

当类或结构实现特定接口时,此类或结构的实例可以隐式转换成相应的接口类型。 例如

EditBox editBox = new EditBox();
IControl control = editBox;
IDataBound dataBound = editBox;

继承

接口可以采用 多重继承。 在以下示例中,接口 IComboBox 同时继承自 ITextBox 和 IListBox

interface IControl
{
    void Paint();
}

interface ITextBox: IControl
{
    void SetText(string text);
}

interface IListBox: IControl
{
    void SetItems(string[] items);
}

interface IComboBox: ITextBox, IListBox {}

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/back/csharp/7875.html

发表评论

登录后才能评论