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

C# Unity 面向对象补全计划 之 接口

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正

本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝

1.接口

在 C# 中,接口(interface)是一种定义了一组方法、属性和事件的类型

接口只包含成员的声明,而不包含任何实现实现接口的类必须提供这些成员的具体实现

接口的主要作用是定义类或结构必须遵循的合同,从而确保一致性和可替换性 

接口的规范与特点

 

2.使用

一个类可以实现多个接口,当一个类实现多个接口时,如果这些接口中有相同签名的成员(方法、属性、事件等),你只需要在类中实现一次即可,这是因为接口成员的实现是基于成员的签名,而不是接口本身

声明:

public interface MyIntface{//属性int PropertyName {get; set;}//方法void MethodName();//事件event EventHandler EventName;//索引器string this[int index] { get; set; }
}public interface MyIntface2 {//属性int PropertyName {get; set;}//方法void MethodName();//事件event EventHandler EventName;//索引器string this[int index] { get; set; }
}

实现:visual studio将鼠标放到继承的接口关键字上,alt+enter自动实现接口

public class I : MyIntface,MyIntface2{public string this[int index] { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }public int PropertyName {get => throw new NotImplementedException();set => throw new NotImplementedException();}public event EventHandler EventName;public void MethodName() {throw new NotImplementedException();}
}

如果你想分别实现不同接口中的同名成员时,可以使用显式实现的方式:

public int PropertyName {get => throw new NotImplementedException();set => throw new NotImplementedException();
}int MyIntface2.PropertyName {get => throw new NotImplementedException();set => throw new NotImplementedException();
}

3.比较

 主要是与抽象类比较,因为二者的相似点是抽象类的抽象方法在声明时也不需要实现

但是也二者相似也仅此而已了

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 血细胞自动检测与分类系统:深度学习与UI界面的结合
  • linux磁盘可视化分析工具
  • spring boot + vue3 接入钉钉实现扫码登录
  • 算法强训day19
  • Qt的事件处理机制、信号和槽以及两者之间的区别
  • 软件测试---Jmeter
  • Java每日一练_模拟面试题1(死锁)
  • Yearning-MYSQL 审计平台部署
  • 导入数据到hive的几种方式
  • @RequestBody与@RequestParam
  • RabbitMQ 入门篇
  • 【数学建模】——【A题 信用风险识别问题】全面解析
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • 【文件fd】深入理解重定向和缓冲区
  • python-局部求和(赛氪OJ)
  • .pyc 想到的一些问题
  • ➹使用webpack配置多页面应用(MPA)
  • Angular6错误 Service: No provider for Renderer2
  • canvas 高仿 Apple Watch 表盘
  • canvas 五子棋游戏
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • exports和module.exports
  • PHP的Ev教程三(Periodic watcher)
  • Vue 重置组件到初始状态
  • 阿里云Kubernetes容器服务上体验Knative
  • 闭包--闭包作用之保存(一)
  • 动态规划入门(以爬楼梯为例)
  • 读懂package.json -- 依赖管理
  • 如何在 Tornado 中实现 Middleware
  • 微信小程序:实现悬浮返回和分享按钮
  • 一个项目push到多个远程Git仓库
  • elasticsearch-head插件安装
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ###STL(标准模板库)
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #define用法
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #NOIP 2014# day.1 T2 联合权值
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (接口自动化)Python3操作MySQL数据库
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)Oracle存储过程编写经验和优化措施
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • . NET自动找可写目录
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET 设计模式—适配器模式(Adapter Pattern)