【学东学西#1】C#中的接口interface

一,接口是什么

首先给出一个普通接口的例子:

interface ICooking
{
    void Cook();
}

上面定义了一个叫ICooking的接口,其中只包含了一个名为Cook()的方法,该方法的返回值类型为void。

总的来说,形如:interface ... {...}的,就是C#中的接口。

二,接口做了什么

接口定义了可以被类(classes)和结构(structs)实现的合同。

接口可以包含:方法(methods)、属性(properties)、事件(events)、索引器(indexers)。

接口不提供 其成员的定义,它只负责对成员的声明。

三,为什么需要接口

接口的主要作用:1,实现‘功能的需求’和‘功能的实现’的分离;2,提高一层抽象,让使用者能忽略底层细节去使用功能。

通过接口设计出你想要实现的功能,然后再后续的类或结构中实现,能让开发进行得井井有条。同时,接口中的方法必须尽数实现,这也避免了方法的遗漏,确保了对‘功能的需求’的完全满足。

四,接口的使用

1,接口的创建

interface 你的接口名
{
    接口的成员;
}

按照上面的语法,将中文替换成对应的东西,你就获得了一个接口。

2,接口的继承

interface 父母接口
{
    父母接口的成员;
}
interface 子女接口 : 父母接口
{
    子女接口的成员;
}

按照上面的语法,你获得了两个接口,其中第二个接口继承了第一个接口。

3,接口的实现

1)继承一个接口并实现

interface IGreetings
{
    void SayHi();
}
class Tom : IGreetings
{
    public void SayHi()
    {
        //Do something
    }
}

以上定义了一个叫IGreetings的接口。该接口包含了一个SayHi()方法,这个方法在接口的子类Tom中被实现了。

2)继承多个接口并实现

interface Interface1
{
    void Method1();
}
interface Interface2
{
    void Method2();
}
class Implementer: Interface1, Interface2
{
    public void Method1() {}
    public void Method2() {}
}

以上定义了两个接口,分别叫Interface1Interface2。类Implementer同时继承了两个接口,故该类必须实现Interface1Interface2的所有方法。

3) 显式接口成员实现

在上面的接口实现中,接口的方法们都是用接口子类的公共成员(public member)实现的。在C#中,我们也可以使用显示接口成员实现(explicit interface member implementation)来避免让子类的成员变得公共。

//承接上例
class Implementer2: Interface1, Interface2
{
    void Interface1.Method1() {}
    void Interface2.Method2() {}
}

显示接口成员实现的做法就是仿照上面的例子,使用完整的接口成员名。

显示接口成员只能通过对应的接口类型才能访问到。比如:

//承接上例
Implementer2 x = new Implementer2();
x.Method1();    //报错,没有Method1
Interface1 y = x;
y.Method1();    //可行

你可能感兴趣的:(【学东学西#1】C#中的接口interface)