1.接口就是一组抽象成员的命名集合。
2.接口与抽象类
虽然类定义了一组抽象成员,它完全可以在定义许多构造函数、字段数据、非抽象成员、等。但是接口,只能包含抽象成员
3.接口成员不指定访问修饰符(所有的接口成员都是公共的和抽象的)。并且支持属性协议,这里和类中的属性比较如下。语法上支持自动属性的格式且支持仅只读或这只写的语法。如:int p{get;} //这个在普通类中是不允许自动属性只用一个的。下图,接口中属性不产生对应的私有字段。
4.实现接口
必须全部实现接口中的成员。
5.显示接口实现
如果要实现具有相同成员的接口,可以使用显示接口实现语法来解决这种命名冲突。
public interface ITest1
{
void Func1();
}
public interface ITest2
{
void Func1();
}
public class MyClass : ITest1, ITest2
{
void ITest1.Func1() //显示实现接口成员,使用这个语法不允许指定访问修饰符,显示实现的成员自动私有的。
{
throw new NotImplementedException();
}
void ITest2.Func1()
{
throw new NotImplementedException();
}
}
调用:
private void TestFun()
{
MyClass myCls = new MyClass();
((ITest1)myCls).Func1(); //必须通过显示的转换来访问对应的方法。
((ITest2)myCls).Func1();
}
6.如果接口扩展了既有的接口,那么他就继承了父类接口定义的抽象成员。