当前位置: 首页 > news >正文

【C#】接口的基本概念

目录
  • 基本
    • 什么是接口
    • 接口与抽象类的区别
      • 抽象类
      • 接口
  • 实例
    • 设计接口

基本

什么是接口

C#接口(interface)是:用来定义一种程序的协定

实现接口的类或者结构要与接口的定义严格一致

有了这个协定,就可以抛开编程语言的限制(理论上)。

C#接口可以从多个基接口继承,而类或结构可以实现多个接口

C#接口可以包含方法、属性、事件和索引器

接口本身不提供它所定义的成员的实现

接口只指定实现该接口的类接口必须提供的成员

C#接口好比一种模版,这种模版定义了对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。

接口不能被实例化

类可以实现多个接口并且通过这些实现的接口被索引

接口变量只能索引实现该接口的类的实例

接口与抽象类的区别

接口是对动作的抽象,抽象类是对根源的抽象。

抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么

抽象类

(1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法  
(2) **抽象类不能被实例化**  
(3) 抽象类<u>可以但不是必须</u>有抽象属性和抽象方法,但是<u>一旦有了抽象方法,就一定要把这个类声明为抽象类</u>  
(4) 具体派生类必须覆盖基类的抽象方法  
(5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖它们。

接口

(1) **接口不能被实例化**  
(2) 接口<u>只能包含方法声明</u>  
(3) 接口的成员包括<u>方法、属性、索引器、事件</u>  
(4) 接口中**不能包含**<u>常量、字段(域)、构造函数、析构函数、静态成员。</u>

实例

1.设计接口:IBluetooth
2.设计类:MobliephoneLaptopSmallCar实现蓝牙接口
3.设计方法:UseDeviceBluetooth
4.输出显示接口中TransferDataByBluetooth方法的返回信息。

本次实例,采用 Windows desktop App (Framework)进行演示

image.png

设计接口

interface IBluetooth
    {
        //类型/版本  -- 萌狼蓝天 微信公众号:mllt9920
        double Type { get; }
        //最大传输速度  -- 萌狼蓝天 微信公众号:mllt9920
        double MaxTransferSpeed { get; }
        //传输数据  -- 萌狼蓝天 微信公众号:mllt9920
        string TransferDataByUsb(string data);
    }

image.png

这个笔记是很久以前的,我发现没写完……哈哈哈

哈哈哈

将就看吧。

【C#】【平时作业】习题-9-接口 - 萌狼蓝天

相关文章:

  • 四嗪 PEG 接头 下篇:Tetrazine-PEG5-NH-CH2CH2-4-Phenol试剂
  • MySQL数据库忘记密码怎么办?教你一招
  • 闭关之 C++ 并发编程笔记(五):并行算法函数与测试
  • JAVA使用xstream进行对象和xml互相转换
  • Git的进一步使用
  • ThinkPHP5.1 交互式命令
  • 语音短信怎么发?互亿无线
  • iOS16.0.2正式版突然发布,紧急修复这4个问题
  • 谷粒商城 高级篇 (二十二) --------- 支付
  • Qt 学习(四) —— QPushButton普通按钮控件
  • 2106. 摘水果(每日一难phase-day22)
  • 前端页面布局的方法汇总
  • Hibernate适配DM数据库主键自增配置
  • 路由与交换技术-23-OSPF链路状态信息同步过程
  • 用户登录权限验证详解-网关登录校验-token解析-全局异常处理
  • @angular/forms 源码解析之双向绑定
  • [NodeJS] 关于Buffer
  • 08.Android之View事件问题
  • 10个最佳ES6特性 ES7与ES8的特性
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • in typeof instanceof ===这些运算符有什么作用
  • Java新版本的开发已正式进入轨道,版本号18.3
  • JAVA之继承和多态
  • JDK 6和JDK 7中的substring()方法
  • node-glob通配符
  • React中的“虫洞”——Context
  • Service Worker
  • vuex 笔记整理
  • 从伪并行的 Python 多线程说起
  • 区块链技术特点之去中心化特性
  • 时间复杂度与空间复杂度分析
  • ​flutter 代码混淆
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Git) gitignore基础使用
  • (libusb) usb口自动刷新
  • (第一天)包装对象、作用域、创建对象
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)大道至简,职场上做人做事做管理
  • (转)关于多人操作数据的处理策略
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET Core引入性能分析引导优化
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网