《.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,并且实现方法的签名必须和接口方法签名一致。

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

相关文章
|
3月前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
90 5
|
9月前
|
算法 Java 调度
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
86 0
|
6月前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
77 10
|
7月前
|
JavaScript 前端开发 小程序
CoderGuide 程序员前后端面试题库,打造全网最高质量题库
CoderGuide涵盖范围包括且不限于:前端面试题(Vue,React,JS,HTTP,HTML,CSS面试题等),后端面试题(Java,Python,Golang,PHP,Linux,Mysql面试题等),以及算法面试题,大厂面试题,高频面试题,校招面试题等,你想要的,这里都有!
106 2
|
7月前
|
开发框架 前端开发 .NET
七天.NET 8操作SQLite入门到实战 - (3)第七天Blazor学生管理页面编写和接口对接
七天.NET 8操作SQLite入门到实战 - (3)第七天Blazor学生管理页面编写和接口对接
|
8月前
|
监控 C#
.NET】聊聊 IChangeToken 接口
【7月更文挑战第2天】‘IChangeToken`接口在.NET Core中用于提供变更通知服务,包括`hasChanged`属性来检查是否已变更,`activeChangeCallbacks`属性确认是否执行回调,以及`registerChangeCallback`方法用于注册变更时执行的回调函数。示例代码展示了如何监视文件变化并响应。`ChangeToken.OnChange`方法允许持续监控并每次变更时触发回调。`IChangeToken`和相关实现广泛用于监听配置变化或其他动态数据更新的场景。
|
7月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
87 0
|
9月前
|
消息中间件 Kafka 程序员
Kafka面试必备:深度解析Replica副本的作用与机制
**Kafka的Replica副本是保证数据可靠性的关键机制。每个Partition有Leader和Follower副本,Leader处理读写请求及管理同步,Follower被动同步并准备成为新Leader。从Kafka 2.4开始,Follower在完全同步时也可提供读服务,提升性能。数据一致性通过高水位机制和Leader Epoch机制保证,后者更精确地判断和恢复数据一致性,增强系统容错能力。**
319 1
|
8月前
|
存储 安全 Java
Java面试题:Java内存管理、多线程与并发框架:一道综合性面试题的深度解析,描述Java内存模型,并解释如何在应用中优化内存使用,阐述Java多线程的创建和管理方式,并讨论线程安全问题
Java面试题:Java内存管理、多线程与并发框架:一道综合性面试题的深度解析,描述Java内存模型,并解释如何在应用中优化内存使用,阐述Java多线程的创建和管理方式,并讨论线程安全问题
79 0
|
8月前
|
存储 并行计算 安全
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
122 0

热门文章

最新文章