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

1.接口声明

接口包含一组非抽象classstruct必须实现的相关功能的定义。

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

2.继承

接口 可以继承自多个基接口。

interface 接口: 基接口1[, 基接口N]

3.实现

3.1实现

类 或 结构 可以实现多个接口,实现接口的类或结构必须实现其所有未提供默认实现的成员并匹配接口中的成员签名,非必须重写实现具有默认实现的成员。

//类实现接口
class : 接口1[, 接口N] 
{
    //类体
}

//结构实现接口
struct : 接口1[, 接口N] 
{
    //结构体
}

3.2默认实现

接口可以为其部分或全部成员定义默认实现private 成员必须定义默认实现

如果类重写实现接口的默认实现的方法,则相当于正常实现。

如果类未重写实现接口的默认实现的方法,则会从接口继承默认实现的方法,则只能通过接口类型的引用访问该方法。

public interface IControl
{
    void Paint() => Console.WriteLine("Default Paint method");
}
public class SampleClass : IControl
{
    // Paint() is inherited from IControl.
}

var sample = new SampleClass();
//sample.Paint();// "Paint" isn't accessible.
var control = sample as IControl;
control.Paint();

3.3显式实现

通过在类成员前面加上接口名称和句点可命名该类成员,显式接口实现是一个类成员,只能通过接口实例访问,不能通过类实例访问。

显式实现还用于处理两个接口分别声明名称相同的不同成员(例如属性和方法)的情况,避免编译器错误。

public interface IControl
{
    void Paint();
}
public interface ISurface
{
    void Paint();
}

public class SampleClass : IControl, ISurface
{
    void IControl.Paint()
    {
        System.Console.WriteLine("IControl.Paint");
    }
    void ISurface.Paint()
    {
        System.Console.WriteLine("ISurface.Paint");
    }
}

4.分部(partial)接口

拆分一个接口的定义到两个或更多的文件中,每个文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来。

partial interface ITest
{
    void Interface_Test();
}

partial interface ITest
{
    void Interface_Test2();
}
//合并后
interface ITest
{
    void Interface_Test();
    void Interface_Test2();
}

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

(0)
上一篇 2021年3月5日 20:00
下一篇 2021年3月6日 00:42

相关推荐

  • 2.7C#函数成员之事件(Event)

    1.事件委托声明 .NET 类库中的所有事件均基于 EventHandler 委托、EventHandler<TEventArgs> 委托,一般不建议自定义委托。 第一个参数为object类型,表示能够引发事件的类的实例。 第二个参数为从 EventArgs 基类派生的子类型的…

    C#语言教程 2021年2月7日
    03330
  • 3.15C#语言的可访问性(Accessibility)

    访问修饰符 程序集 是通过在单个编译中编译一个或多个 .cs 文件而创建的 .dll 或 .exe。 调用方的位置 public protected internal protected internal private protected private 在类内 ✔️️ ✔️ ✔️ ✔️ ✔️ ✔️ 派生类(相同程序…

    C#语言教程 2021年3月15日
    05670
  • 3.10C#引用类型之委托(Delegate)

    委托类型派生自 System.Delegate 类。 1.委托声明 委托 表示对具有 特定参数列表 和 返回类型 的方法的引用。 委托 可认为是函数式语言里的“函数类型”,通过委托,可以将方法视为可赋值给变量或作为参数传递的实体。 委托还类似于其它一些语言中存在的“函数指针”概念。 具有相同参数列表和返回类型…

    C#语言教程 2021年3月10日
    04800

发表回复

登录后才能评论