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

news2024/9/23 9:32:37

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

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

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.比较

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

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

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1972021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效PPT制作,一键完成——四大AIPPT工具推荐

在现代社会,PPT已经成为职场人士必备的技能之一。如今,随着人工智能技术的发展,AI制作PPT的工具应运而生。今天,就为大家推荐四款实用的AIPPT工具,让你轻松提升工作效率。 一、笔灵AIPPT 链接:https://ib…

Deep Updated Subspace Networks for Few-Shot RSSC

这篇文章介绍了子空间的概念,然后将query set的特征和预测概率与Support set的特征混合到一起来减少遥感场景图像背景复杂的影响。我觉得主要的创新点还是在特征混合这一块,下图是总体框架图: 特征混合的公式为: 其中的表示第C个类…

什么是图像噪声

" 声明:此文档中的大部分内容来源于网络,经校对和整理后分享给大家,仅供学习参考使用。" 1、什么是图像噪声 维基百科的定义:图像噪声(image noise)是图像中一种亮度或颜色信息的随机变化(被拍摄…

Error “[object Object]“ when using LangChain‘s AzureChatOpenAI in Node.js

题意:在Node.js中使用LangChain库的AzureChatOpenAI功能时遇到错误“Error [object Object]” 问题背景: Im attempting to use LangChains AzureChatOpenAI with the gpt-35-turbo-16k model in a Node.js application to create an OpenAI Function A…

c++ - 模拟实现set、map

文章目录 前言一、set模拟实现二、map模拟实现 前言 在C标准库中,std::set 和 std::map都是非常常用的容器,它们提供了基于键值对的存储和快速查找能力。然而,关于它们的底层实现,C标准并没有强制规定具体的数据结构,只…

【数据结构】——链式二叉树

目录 一、链式二叉树的定义结构 二、链式二叉树的遍历 2.1前序遍历 2.2中序遍历 2.3后序遍历 2.4层序遍历 三、链式二叉树的基本功能函数 3.1结点个数 3.2叶子结点个数 3.3二叉树第k层结点个数 3.4查找值为x的结点 3.5二叉树的销毁 四、基础OJ 4.1二叉树遍历 4.2…

2023-2024年 Java开发岗面试题经验分享

在各行各业中,面试前我们总会思索一个问题:究竟什么样的求职者能获得面试官的青睐?作为求职者,我们又该如何准备,以应对各种面试官的挑战?在这激烈的竞争里,如何才能让自己从众多应聘者中脱颖而…

镭速FTP替代升级页面助力企业创造新创安全运行环境

在当今快速发展的信息技术环境和日益严峻的网络安全挑战下,企业面临着数据传输和文件管理方面的重大挑战。特别是在信创环境下,传统的FTP已逐渐无法满足现代企业的需求,这促使企业寻求更高效、安全的替代方案。 企业在信创环境运行中的挑战 …

(ICLR-2024)PIXART-α:扩散Transformer的快速训练,用于逼真的文本到图像合成

PIXART-α:扩散Transformer的快速训练,用于逼真的文本到图像合成 Paper Title:PIXART-α: FAST TRAINING OF DIFFUSION TRANSFORMER FOR PHOTOREALISTIC TEXT-TO-IMAGE SYNTHESIS Paper是华为诺亚方舟实验室发表在ICLR 2024的工作 Paper地址 Code地址 项…

由浅入深的了解进程(4)

进程 1、优先级1、1、什么是优先级1、2、为什么需要优先级1、3、Linux优先级的特点和查看方式 2、补充概念3、命令行参数4、环境变量 1、优先级 1、1、什么是优先级 和生活中的概念其实是差不多的。优先级在进程中的定义是指定进程获得CPU资源的先后顺序。如果换一个视角的话…

ATF加载自定义镜像

实际上包含了两个问题: 如何把自定义的二进制文件打包到fip.bin中?如何在secure boot流程中load和认证自定义的二进制文件? 如何打包 证书创建工具和FIP打包工具是通过命令行传参的方式进行证书创建和打包的,如下: …

图新地球-新图源来一波(地表覆盖物、地表水、岩土圈)

0.序 以前的GlobalLand30图源不可访问了,很多需要地物分类的朋友很苦恼。 现在星图新上了一批图源,不仅包括地物分类、水域、还包括土壤酸碱度、有机碳、粘土、阳离子等各种岩土相关的地图服务。 这边全部配置成了图新地球可以直接加载的图源&#xff…

人生总会有自认为迈不过去的坎【西藏旅记1】

人生总会有自认为迈不过去的坎 孤独,也是人生一态。 有两个人说过我这样的性格,不会有真正的朋友,一个是旅行时的领队,另一个也是旅行时的领队。 以他们的视角,形形色色的人,应接不暇的景,他们修…

Github 2024-08-01 开源项目日报Top10

根据Github Trendings的统计,今日(2024-08-01统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量非开发语言项目3Go项目2Python项目2C项目1C#项目1Rust项目1TypeScript项目1编程面试大学:成为软件工程师的全面学习计划 创建周期:2859 天协议…

如何基于欧拉系统完成本地软件仓库安装

挂载 [rootlocalhost ~]# mount /dev/sr0/openeuler/ 查看一下 在脚本里添加以下两行 [rootlocalhost ~]# vim /etc/rc.d/rc.local 给一个可执行权限,并重启 [rootlocalhost ~]# chmod x /etc/rc.d/rc.local [rootlocalhost ~]# reboot 记住挂载点 切换到 /et…

CANoe系统变量模块里定义的结构体类型和变量从CAPL代码角度理解

CAPL里声明一个结构体类型: variables {struct DoIPMessage{byte version;byte inVersion;word type;dword length;byte payload[1500];};struct DoIPMessage doipMessage; }声明一个结构体类型DoIPMessage,定义了一个此结构体…

【C语言】C语言期末突击/考研--指针(一篇就够)

目录 一、指针的本质(间接访问原理) 1.1.指针的定义 1.2.取地址操作符与取值操作符,指针本质 二、指针的传递使用场景 2.1.什么是指针的传递 2.2.指针的传递使用场景 三、指针的偏移使用场景 3.1.指针的偏移 3.2.指针与一维数组 四…

风景视频素材高清无水印的网站有哪些?6个热门素材网站分享

高清无水印风景视频素材网站推荐,让您的视频内容独树一帜! 对于视频创作者来说,一段引人入胜的风景视频素材往往能够瞬间抓住观众的注意力,仿佛将他们带入了一个全新的世界。然而,很多创作者在实际拍摄过程中会面临时…

(二)springboot2.7.6集成activit5.23.0之集成设计器

引入官方流程设计器 1. activiti-webapp-explorer2-5.23.0.war项目并解压。 2.将文件夹diagram-viewer和editor-app以及modeler.html拷贝到项目resources/static目录下: 顺便说一下: 在Spring Boot中,静态资源的访问顺序是先找static&#…

QT 安装指南

简介 Qt 是一个跨平台的应用程序开发框架,被广泛应用于桌面、移动设备和嵌入式系统等领域。本文将详细介绍如何在 Windows 操作系统上安装 Qt 5.14.2 版本(这个版本较为稳定适用)。 安装前准备 操作系统: 确保您的计算机运行的是 Windows 10 或更高版本。硬件要求…