第五章 接口
1.接口
接口在语法上的声明与抽象类完全相同,但不允许提供接口中任何成员的实现方式。一般情况下,接口只能包含方法、属性、索引器和事件的声明。
不能实例化接口,他只包含其他成员的签名。接口中既不能有构造函数也不能有字段。接口的定义也不允许包含运算符重载(因为接口通常是公共协定,包含运算符重载会引起一些与其他.NET语言的不兼容问题)。
在接口中还不允许声明关于成员的修饰符。接口成员总是公有的,不能声明为虚拟的或静态的。如果需要,应该在实现的类来声明。
2.定义和接口实现
public interface IChinese
{
string Speak();
}
public class Speaker : IChinese
{
public string Speak()
{
return "中文";
}
}
IChinese s = new Speaker();
s.Speak();
Speaker s = new Speaker();
s.Speak();
都可以调用Speak这个方法。
接口引用完全可以看成类引用----但接口引用的强大之处在于,他可以引用任何实现接口的类。
3.派生的接口
接口可以彼此继承,其继承方式与类的继承方式相同。接口B派生自接口A,这表示实现接口B的任何类都要实现接口B和接口A中的方法。