一、什么是接口?
答:使用关键字interface创建的数据类型(接口名建议用“I”开头,后单词首字母大写)
二、为什么要使用接口?
答:接口类似插件,能扩展类的行为,还可以规范不同类之间的行为(多个类使用一个接口),使得不同类在行为上保持一致,实现最大限度复用
三、什么时候使用接口?
答:多个类具有相似的方法,则代码冗余,此时提取出多个类中相同的方法,对其进行制定规范,制作成接口,或者多个类需要复用某一个类中的方法,则需要建立多个继承关系,太复杂,此时将该方法制作成接口,与其他类连接即可
四、用C#实现接口
1.定义接口
![](https://img-blog.csdnimg.cn/img_convert/e7fb6ff1ead0aca37b34b21a79d0a274.png)
a:使用inteface定义接口,接口中的方法只用定义即可,不需要实现
2.(隐式)实现与调用接口--经常用
![](https://img-blog.csdnimg.cn/img_convert/37ae10ede79a26e5c92ade7e4934183d.png)
b:类继承接口,并必须实现接口中的方法(隐式实现),相当于实现类,只要
![](https://img-blog.csdnimg.cn/img_convert/8948e7e040b13f962ef7e085acba3455.png)
c:隐式实现接口的调用,注意每个类与接口之间的关系
3.(显式)实现与调用接口--少用
![](https://img-blog.csdnimg.cn/img_convert/14f5dcece37a20e8deca8994cde45eb7.png)
d:在实现类中显式实现接口方法
![](https://img-blog.csdnimg.cn/img_convert/6dfff0d35c1a8c145ceef81695ba0882.png)
e:显式实现接口的调用,注意格式
注意:1.定义接口时,接口与类是同级别的,不能在类中定义,且接口可以为空
2.结构体可以继承接口,
3.接口可以继承接口,此时被继承的接口中的方法不用具体实现
4.接口与类都可以继承多个接口,类要同时实现多个接口
5.显式接口作用:解决接口中成员对实现类不适用的问题(即某些情况下,隐式接口不好用)
解决多接口实现时的二义性问题(即接口与接口有相同的方法)
五、特点:类继承接口,必须实现接口中所有方法(抽象类除外)
六、总结:
接口可以简单理解为一个独立的抽象方法,在方法实现类中实现后,其他类继承这个类,则相当于继承接口,关于怎么提取多个类中的特性相同方法,这又是一门学问,但熟能生巧。
另外,某些编译器中的库函数会自带一些接口,比如:
IComparable比较接口
IEnumerable枚举接口