接口简介: (具有相同行为特征的集合)
1 定义接口使用interface 关键字
2 一般接口名要以大写I开头
3 接口中只能包含方法【属性、事件、索引器最终都是方法,所以可以说接口中只能包含方法】
4 接口中的成员不能有任何访问修饰符,默认是public,如果手动写了访问修饰符这报错!!!!
5 接口中的成员不能有任何实现,就像抽象方法一样不能有实现
6 接口不能直接New出一个对象
接口的使用:
1, 实现接口的类,必须将接口中的所有成员都实现。
2, 当一个类继承了某个父类,并且实现了多个接口的时候,被继承的父类必须写在继承列表中的第一个位置。
3, 通常的使用方式:创建接口的数组用于 存储不同实现该接口的类的对象
接口的作用 :
1 当类与类之间不具有父子类关系时,可以使用接口抽象出他们共同的行为特征形成一个接口
例:飞机,鸟都会飞,但他们没有父子关系。这时可以抽象出具有飞这个方法的接口
2 克服类的多继承问题,类不可以多继承,接口可以,当一个类需要同时“继承”多个类的行为时,
可以考虑使用接口来进行多实现。
实现接口的理解
1 只要实现接口的类中具有该接口相同方法的签名的实现,就算是实现了该接口的方法。
2 假如父类实现了接口,则继承自该父类的子类也间接具有了该接口方法的实现(继承得到),而且不用写具体的实现。
3 父类实现了IIntroduce接口,并且把接口中的Introduce()方法实现成虚方法,所以继承该父类的子类就可以重写该接口方法了。
4 一般父类声明了接口,子类也会声明实现,这样的好处是当将子类当成接口使用时不用进行过多的类型装换。
(不用再重新实现一次该 接口的函数)
显式实现接口:
1 当实现接口的类有一个与要实现的接口方法重名的函数时,需要使用显式实现接口用于区分两个方法函数。
void IFace2.Fly()
{
Console.WriteLine("实现了IFace2中的Fly方法。");
}
由于现实接口中成员是不能使用访问修饰符的,类中成员没有写访问修饰符这默认就是private ,显示实现接口是私有的 所以必须通过接口名才能访问的到,当想访问显示接口时必须将相应的类的对象转换成接口。
2 当一个类多继承多个接口,并且接口之间有相同的方法签名且需要不同实现时,也可以使用显示实现接口
(若不需要不同实现,则不需要使用显示接口)
参考:传智播客教学视频