关键字:interface
1.什么是接口?
接口是一个契约。规定了一组功能。
(1)接口不能包含实现,只能包含各种签名
(2)接口成员默认public并且无需再显式添加public
(3)实现接口的类必须实现接口的全部成员。
(4)针对同一接口的不同实现类可以采用不同方法实现接口的成员。
2.怎么定义一个接口?
/*可选:访问修饰符:public(实现不局限于本程序集);internal(默认本程序集内实现)*/ /*可选:partial*/ interface IName :/*可选:基接口*/
{
//接口内成员
}
{
//接口内成员
}
3.接口的实现?
(1)实现单个接口
class ClassOne : IName
//如果还继承了其他类,基类要在接口类前面,如果基类实现了接口中的成员而继承类没有,也是可以的
{
//实现所有IName的成员
//也可以拥有自己独有的成员
}
IName name = new ClassOne(); //定义接口实现类对象,但是这个对象无法访问实现类中的独有成员,只能访问原接口成员。
ClassOne cls = (ClassOne)name; //向下转型,使得cls可以使用实现类中独有的成员。
{
//实现所有IName的成员
//也可以拥有自己独有的成员
}
IName name = new ClassOne(); //定义接口实现类对象,但是这个对象无法访问实现类中的独有成员,只能访问原接口成员。
ClassOne cls = (ClassOne)name; //向下转型,使得cls可以使用实现类中独有的成员。
(2)实现多个接口
class ClassTwo : IName,
IAge
{
//实现两个接口的全部成员
}
IName name = new ClassTwo(); //只能访问接口IName的成员
IAge age = new ClassTwo(); //只能访问接口IAge的成员
{
//实现两个接口的全部成员
}
IName name = new ClassTwo(); //只能访问接口IName的成员
IAge age = new ClassTwo(); //只能访问接口IAge的成员
ClassTwo cls = new ClassTwo();
//访问所有接口实现
如果两个接口中有相同的成员,可以提供一个共同实现,也可以显示指定各自的实现(通过"接口.成员"来显式引用)
4.接口的派生?
interface ISex : IName,
IAge
{
//继承下了IName和IAge的成员
//定义自己的成员
}
{
//继承下了IName和IAge的成员
//定义自己的成员
}