C#回顾学习笔记三十四:接口
1.接口是什么?接口是一种行业规范。比如程序员B扔给程序员A一个写好的接口文件,说:我写好了我们这个项目要用到的一些方法名字和注释,你参照注释去把这些方法实现一下。首先这是一个很负责的程序员B,然后程序员A拿到这个接口文件后,再去实现这个接口,就知道这个项目大概要用到什么方法,之后程序员A要做的就是用具体代码去实现这些方法。接口有很多跟抽象类相似的地方,这也使得程序员和面试官总喜欢讨论“抽象类和接口有什么异同之处”。
2.为什么使用接口?这样很方便代码的实现、管理和维护。就拿上面的例子来说,程序员B最了解他们合作的这个项目要用到哪些方法,程序员B只需要写出这些方法名字,然后交给程序员A具体实现方法。如果因为项目修改而要废掉或新增一些方法,就先在接口文件内对方法进行删除或新增,再到接口实现类里实现方法。接口相当于一个领袖,决定要“做什么”,实现类相当于员工,决定“具体要怎么做”。
3.如何声明接口?在项目上右键-添加-新建项-接口,给接口取个名字并单击确定。微软提供的接口命名习惯是“I...able”,表示“我能做……”,比如接口IDisposable,表示“我可以释放资源”。这里做测试,假设取名叫“IUserable”,声明接口后,在接口内添加需要用到的方法名。代码如下:
interface IUserable
{
void register();//注册一个新用户
void deleteUser();//删除一个用户
}
补充:实际上只要把一个类文件里的class关键字改成interface,就可以直接把这个类改变成一个接口。
4.如何使用接口?在上面已经演示了如何声明接口并提供需要用到的方法,使用接口就是写一个接口实现类并继承自接口,然后实现接口里的方法。先新建一个接口实现类,假设名字就与其对应,叫User.cs。再让User类继承IUserable(class User : IUserable)。然后鼠标单击IUserable,可以看到神奇的蓝色下标,在里面找到“实现接口IUserable”。VS2013可以用alt+shift+F10快捷键实现,VS2015可以用ctrl+.快捷键实现。图片示范如下:
接着在实现类里完善方法,对方法进行实现,详细代码如下:
class User : IUserable
{
public void register()
{
Console.WriteLine("恭喜你,注册成功");
}
public void deleteUser()
{
Console.WriteLine("已经注销一位用户");
}
}
主函数的代码如下:
class Program
{
static void Main(string[] args)
{
IUserable user = new User();
user.register();//调用方法假装注册了一个账号
user.deleteUser();//调用方法假装删除了这个账号
Console.ReadKey();
}
}
观察主函数的代码可以发现,是用接口去new的实现类的对象,这跟抽象类的用法很相似,因此接口也是体现多态的三种方式之一。
5.接口的一些知识点总结:
1)[public] interface I...able //表示某个能力
{
成员;
}
2)接口中的成员不允许添加访问修饰符
3)接口是一种规范,只要一个类继承了一个接口,这个类就必须实现这个接口中所有的成员
4)为了多态,接口不能被实例化,也就是说接口不能new(不能创建对象)
5)接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符默认为public,不能修改
6)接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)
7)接口中只能有方法、属性、索引器、事件,不能有“字段”和构造函数
8)接口与接口之间可以继承,并且可以多继承
9)接口不能去继承一个类,而类可以继承接口(接口只能继承于接口,而类可以继承接口,也可以继承类)
10)实现接口的子类必须实现该接口的全部成员
11)一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须写在IA的前面