《.NET程序员面试秘笈》----面试题9 举例描述接口的作用-阿里云开发者社区

开发者社区> 开发与运维> 正文

《.NET程序员面试秘笈》----面试题9 举例描述接口的作用

简介: 【考点】接口类型的理解,接口在程序中的意义。

本节书摘来自异步社区《.NET程序员面试秘笈》一书中的第1章,面试题9,作者: 张云翯, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

面试题9 举例描述接口的作用

.NET程序员面试秘笈
【考点】接口类型的理解,接口在程序中的意义。

【出现频率】

【解答】

接口在程序设计中的作用为充当类或结构的功能界面,接口的属性、方法等属于抽象描述必须通过类或结构的实现才能使用。接口是使用者只知道接口有些什么功能,却不知道功能如何实现、由谁实现,这给程序的设计留下了很大的灵活性。例如某个项目由多个功能模块组成,每个模块由一个程序员完成,程序员只需编写完模块功能的实现后,留下该模块的接口供其他人使用。其他人在程序中只需直接使用接口的功能,而不必了解接口的功能如何实现等问题,其关系模型如图1.12所示。


ef77d37dff07d1d1a2aeb999d6c42e763d2107c5

说明:
使用者指在程序中使用接口功能的代码编写者。
当功能模块能力无法满足需要或功能模块的需求有变更时,程序员只需将该功能模块的实现代码部分进行修改或扩展,其他调用接口的程序无须变动。接口的这种应用模式可称为Bridge模式,Bridge模式即为分离意图和实现,以得到更好的扩展性。本例以Computer为接口,通过PCA类和PCB类实现该接口的功能。在ch01目录下新建一个程序文件,并命名为Interface.cs,编写代码如程序1.10所示。


c4fea28b64c165b0ea237a1372b02db11c98c24e


dc24a9add67d04d6ada1bbb83276ff4de1aa8abc

在命令行下编译Interface.cs后,执行Interface程序,其效果如图1.13所示。


e10628d361721f85d36520698d1156ae55178f1a

本例程序运行时,创建PCA类的实例,并将引用赋给接口类型a变量。第1行输出时,接口类型的a直接调用getcpu方法,在第2行输出中,a直接访问videocard属性。其属性和方法的操作实际为PCA类的实例所执行。接下来将PCB类的实例引用赋给a,再次输出的内容中,同样为a调用getcpu方法并访问videocard属性,其操作实际为PCB类的实例执行。由于接口的定义中videocard属性是只读的,所以无法进行写入操作,但是在PCB类中的videocard属性可写,所以创建PCB类型的实例操作videocard属性时,可直接写入用户输入值。

【分析】

接口是面向对象编程中一个非常重要的类型,和抽象类非常相似。接口类型无法被实例化,只能被其派生类或结构实现,其编写方法如以下代码所示:

interface 接口名称 [: 接口名称1,接口名称2]
{
 属性声明;
 方法声明;
 索引器声明;
 事件声明;
}

从以上代码可得知,接口可以继承多个接口,而类只能继承一个基类(单继承)。接口可描述属性、方法、索引器和事件,不过接口只能作声明,无法实现,所有声明必须由继承此接口的类或结构实现。必须要注意的是,接口的访问权限为public,类或结构实现接口的成员必须保持public,并且实现方法的签名必须和接口方法签名一致。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章