1.接口声明
接口包含一组非抽象class
或struct
必须实现的相关功能的定义。
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