欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#回顾学习笔记三十四:接口

程序员文章站 2022-06-13 21:04:28
...

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+.快捷键实现。图片示范如下:

C#回顾学习笔记三十四:接口

接着在实现类里完善方法,对方法进行实现,详细代码如下:

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的前面