C# 图解教程 第5版 —— 第16章 接口

这篇具有很好参考价值的文章主要介绍了C# 图解教程 第5版 —— 第16章 接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

16.1 什么是接口

​ 接口是声明一组函数成员而不进行实现的引用类型,只能用类和结构来实现接口。

使用 IComparable 接口的示例

​ Array 类的 Sort 方法依赖于 IComparable 接口,其声明在 BCL 中,只包含唯一的 CompareTo 方法。图 16.1 中灰色表示该方法目前未实现。

C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展
图16.1 IComparable 接口

​ 调用 CompareTo 方法时,应该返回如下值:

  1. 负数:当前对象 < 参数对象。
  2. 正数:当前对象 > 参数对象。
  3. 0:两个对象相等。

​ 为自定义类实现 IComparable 接口后,就可以使用 Array.Sort 方法进行排序:

C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展
图16.2 在 MyClass 类中实现 IComparable 接口

16.2 声明接口

  1. 接口声明不能包含以下成员:
    • 数据成员。
    • 静态成员。
  2. 接口声明只能包含如下类型的非静态成员:
    • 方法。
    • 属性。
    • 事件。
    • 索引器。
  3. 函数声明不能包含任何实现代码,而是使用分号代替函数主体。
  4. 接口名称必须从大写的 I 开始。
  5. 可以声明分部接口。
C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展
  1. 接口和接口成员的访问性有一些不同:
    • 接口声明可以有任何的访问修饰符。
    • 接口成员是隐式 public,不能有任何访问修饰符。
C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展

16.3 实现接口

​ 要实现接口,类和结构必须:

  1. 在基类列表中包含接口名称。
  2. 为每一个接口成员提供实现。
C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展

​ 重要事项如下:

  1. 必须实现接口的所有成员。
  2. 基类名称必须放在所有接口之前。
C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展

16.4 接口是引用类型

​ 不能通过类对象的成员访问接口,只能通过将类对象引用强制转换为接口类型来获取接口引用。注意:接口引用不能调用类中不属于接口的其他成员。

C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展
图16.3 类对象的引用以及接口的引用

16.5 接口和 as 运算符

​ 如果尝试将类对象引用强制转换为类未实现的接口引用,则会抛出异常。使用 as 运算符可以避免抛出异常:

  • 如果实现了类接口,则 as 返回指向接口的引用。
  • 如果未实现接口,则 as 返回 null,而不抛出异常。
C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展

16.6 实现多个接口

  1. 类或结构可以实现任意数量的接口
  2. 所有实现的接口必须列在基类列表中,以逗号分隔(在基类名称之后,如果有的话)。

16.7 实现具有重复成员的接口

​ 如果一个类实现了多个接口,并且其中一些接口具有相同的成员,则类可以实现单个成员来同时匹配所有重复成员的接口。

C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展
图16.4 由同一个类成员实现多个接口

16.8 多个接口的引用(*)

16.9 派生成员作为实现(*)

16.10 显示接口成员实现

​ 可以创建显示接口以实现相同接口的分离:

  • 使用限定接口名称声明。
  • 限定接口名称的声明如下:
C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展
图16.5 显示接口成员实现

​ 因此,对于成员函数而言,有如下三种实现方法:

  1. 类级别实现(不依赖接口,专门提供给类对象调用)。
  2. 显示接口成员实现(依赖接口,专门提供给接口调用)。
  3. 类级别和显示接口成员实现(类和接口都能调用)。

​ 下面这个例子包含了两个显示接口成员实现,而没有类级别的实现。即,只能通过接口引用调用函数 PrintOut,而不能使用类对象调用:mc.PrintOut()

C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展
图16.6 具有显示接口成员实现的接口引用

访问显示接口成员实现

​ 显示接口成员实现只能通过接口来访问:文章来源地址https://www.toymoban.com/news/detail-755906.html

C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展

16.11 接口可以继承接口

  • 类在基类列表中只能有一个类名;而接口可以有任意多个接口。
C# 图解教程 第5版 —— 第16章 接口,LeetCode写题记录,c#,开发语言,职场和发展
  • 列表中的接口本身也可以继承其他接口。
  • 继承后的接口包含自己的成员和所有继承接口的成员。

16.12 不同类实现一个接口的示例(*)

到了这里,关于C# 图解教程 第5版 —— 第16章 接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 图解教程 第5版 —— 第24章 预处理指令

    ​ C# 中没有实际的预处理程序,“预处理”指令由编译器处理,但这个术语被保留了下来。 预处理指令必须和 C# 代码在不同的行。 预处理指令不需要以分号结尾。 包含预处理指令的每一行必须以“#”字符开始。 “#”字符前可以有空格。 在“#”字符和指令之间可以有空格

    2024年01月17日
    浏览(35)
  • C# 图解教程 第5版 —— 第22章 命名空间和程序集

    ​ 在许多项目中,会使用其他程序集的类或类型,而不仅仅是自己声明的。这些程序集(称为类库)可能来自 BCL 或第三方供应商,也可以是自己创建的。通常这些程序集文件的名称以 .dll 扩展名结尾,而不是 .exe。 图22.1 SuperLib 源代码和结果程序集 ​ 假设还要写一个名为

    2024年01月18日
    浏览(41)
  • mongodb安装教程(图解+链接,轻松拿到了阿里前端高级开发工程师的offer

    4.测试是否安装成功 进入C:Program FilesMongoDBServer3.4bin文件夹下,点击mongod.exe,如果闪一下退出,说明安装正常 5.安装服务 用管理员权限打开cmd命令行,输入如下命令安装mongodb服务 sc create MongoDB binPath= “C:Program FilesMongoDBServer3.4binmongod.exe --service --config=D:mongodbmongo.co

    2024年04月09日
    浏览(54)
  • 《UE5_C++多人TPS完整教程》学习笔记15 ——《P16 会话接口委托(Session Interface Delegates)》

    本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P16 会话接口委托(Session Interface Delegates)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。 本节课我们将向新创建的子系统添

    2024年02月20日
    浏览(51)
  • WinFrom、C# 学习记录五 开发一个鼠标自动点击小软件

            经常会被问到需要点击软件的,主要都是玩游戏的盆友,但是也有其它用途的。所以简单弄了一个,打算每当有时间,有需求,就加一些小功能。         这里主要是要记录一下相关开发工作,也记录一些使用/更新的信息。         【2022/08/22】版本v1.0(初始版

    2024年02月16日
    浏览(51)
  • 基于C#的AE二次开发之IQueryFilter接口、ISpatialFilter接口、IQueryDef 接口的查询接口的介绍

    一、开发环境 开发环境为ArcGIS Engine 10.2与Visual studio2010。在使用ArcEngine查询进行查询的时候主要使用三种查询接口IQueryFilter(属性查询) 、ISpatialFilter(空间查询) 、IQueryDef (多表查询) 那么这三个接口的区别是什么呢? 要求 IQueryFilter ISpatialFilter IQueryDef 属性约束 True Tr

    2024年02月07日
    浏览(38)
  • 每个.NET开发都应掌握的C#接口知识点

    作为.NET开发者,接口是C#必须掌握的知识点,接口是C#中实现多态和组件间互操作性的关键机制之一。 接口是一种抽象的类型,它定义了一组成员(方法、属性、事件等)的规范,但没有实现代码。类可以实现一个或多个接口,以表明它们提供了特定的功能。 以下是每个.N

    2024年02月13日
    浏览(47)
  • java怎么写接口,java开发api接口教程

    在大家的工作中,经常写界面。 而且,最常用的是http接口。 但是,对于初学者Java工作人员来说,写http界面还很难。 那么,用实例来说明吧。 一、建设项目 首先,生成SpringBoot项目。 省略如何构建此处,并引入相关依赖关系: org.springframework.boot artifactIdspring-boot-starter /从属

    2024年02月05日
    浏览(191)
  • 【Unity游戏开发教程】零基础带你从小白到超神16——四种方法控制人物移动之角色控制器

    直接修改组件位置 去资源商城下载角色控制系统成品直接拿来用 unity提供的角色控制器组件 通过物理系统自己做

    2024年02月08日
    浏览(47)
  • 企业微信hook接口,朋友圈功能开发教程,逆向开发,企业微信营销开发

    【技术支持】 支持语言 操作码 110001 请求说明 参数名 必选 类型 说明 syncKey 是 string 同步key 请求示例 返回示例 简要描述 110003 请求说明 参数名 必选 类型 说明 syncKey 是 string 同步key 请求示例 返回示例 基本实现企业微信pc端所有功能。 1.登陆模块: 接收登录二维码,登录成

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包