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

15.初始接口1.0 C#

这是一个用于实验接口的代码

适合初认识接口的人

【CSDN开头介绍】(文心一言AI生成)

在C#编程世界中,接口(Interface)扮演着至关重要的角色,它定义了一组方法,但不提供这些方法的实现。接口作为类与类之间通信的契约,确保了不同类之间的解耦与互操作性。今天,我们将深入探讨一个关于接口使用的实例,该实例通过定义一个animals接口及其两个具体实现类DogCat,展示了接口如何在多态性、代码复用以及设计灵活性方面发挥巨大作用。

代码的核心在于animals接口的声明,它要求所有实现该接口的类都必须提供一个Speak方法的实现。DogCat类分别通过实现Speak方法来遵守这一约定,分别输出“Woof!”和“Meow!”,模拟了狗和猫的叫声。

此外,代码还巧妙地利用接口作为方法参数,通过MakeAnimalSpeak方法展示了接口如何允许我们编写接受不同类型对象的通用代码,只要这些对象实现了animals接口。这种设计不仅提高了代码的复用性,还增强了系统的扩展性,使得未来可以轻松添加更多实现animals接口的类,而无需修改现有代码。

通过本实例的学习,相信您对C#中接口的使用有了更深入的理解,也掌握了如何利用接口实现多态性、提高代码复用性和设计灵活性的技巧。希望这段代码和解析能为您的编程之路提供有益的启示和帮助。

 在使用默认接口功能时,如果版本旧就会像下面这样报错

代码如下:

using System;//声明一个public接口,是animals
public interface animals
{//定义一个方法但是没具体设定//这意味着实现这个接口的类必须定义这个方法void Speak();//如果使用下面这个//即使实现接口的类没有定义方法也可以使用默认的方法//void Speak()//{//    Console.WriteLine();//}}//下面Dog类是对接口animals的实现
public class Dog : animals
{//提供Speak方法的具体实现来遵守animals接口的约定public void Speak(){Console.WriteLine("Woof!");}
}public class Cat : animals
{public void Speak(){Console.WriteLine("Meow!");}
}class Program
{static void Main(){//创建新的Dog类对象doganimals dog = new Dog();animals cat = new Cat();//对对象使用方法dog.Speak();cat.Speak();//通过传递Dog和Cat对象给MakeAnimalSpeak方法,//展示了接口如何允许方法接受不同类型的对象MakeAnimalSpeak(dog);MakeAnimalSpeak(cat);Console.ReadKey();}//定义了一个名为MakeAnimalSpeak的方法,//它接受一个animals类型的参数并调用其Speak方法。static void MakeAnimalSpeak(animals animal){animal.Speak();}
}

输出结果:

woof
meow
woof
meow

相关文章:

15.初始接口1.0 C#

这是一个用于实验接口的代码 适合初认识接口的人 【CSDN开头介绍】(文心一言AI生成) 在C#编程世界中,接口(Interface)扮演着至关重要的角色,它定义了一组方法,但不提供这些方法的实现。接口作为…...

数据结构day5:单向循环链表 代码作业

一、loopLink.h #ifndef __LOOPLINK_H__ #define __LOOPLINK_H__#include <stdio.h> #include <stdlib.h>typedef int DataType;typedef struct node {union{int len;DataType data;};struct node* next; }loopLink, *loopLinkPtr;//创建 loopLinkPtr create();//…...

利用CNN与多尺度特征、注意力机制的融合实现低分辨率人脸表情识别,并给出模型介绍与代码实现

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下利用CNN与多尺度特征、注意力机制的融合实现低分辨率人脸表情识别&#xff0c;并给出模型介绍与代码实现。在当今社会&#xff0c;人脸识别技术已广泛应用&#xff0c;但特定场景下的低质量图像仍是一大挑战。 低分…...

spring RestTemplate使用说明

rest-template是spring对httpclient的逻辑封装&#xff0c;它底层还是基于httpclient&#xff0c;所以一些配置其实跟httpclient是强相关的。 基本配置 rest-template可以不带参数&#xff0c;使用默认配置&#xff0c;也可以指定ClientHttpRequestFactory参数&#xff0c;Cl…...

设置HP条UI

概述 设置常见的生命值条&#xff0c; 实现过程 设置UI/image作为形状 设置UI/Image作为背景 设置UI/image&#xff08;healthfill&#xff09;作为填充图片&#xff0c;层数低于背景 设置heathfill的imagetype为filled fillmethod为horizontal [SerializeField] private Im…...

常见排序算法总结 (五) - 堆排序与堆操作

堆排序&#xff08;借助 API&#xff09; 算法思想 利用堆能够维护数组中最大值的性质&#xff0c;根据数组元素建立最大堆&#xff0c;依次弹出元素并维护堆结构&#xff0c;直到堆为空。 稳定性分析 堆排序是不稳定的&#xff0c;因为堆本质上是完全二叉树&#xff0c;排…...

Linux 本地编译安装 gcc9

这里演示非sudo权限的本地linux 用户安装 gcc9 下载源代码&#xff1a; 可以从GCC官方网站或其镜像站点下载GCC 9的源代码压缩包。使用wget或curl命令&#xff0c;这通常不需要额外权限 wget https://ftp.gnu.org/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.gz tar -xf gcc-9.5.0.tar…...

开源FreeSWITCH大模型智能客服系统的最佳实践

开源 FreeSWITCH 大模型智能客服系统的最佳实践 原作者&#xff1a;开源呼叫中心FreeIPCC&#xff0c;其Github&#xff1a;https://github.com/lihaiya/freeipcc 引言 开源 FreeSWITCH 大模型智能客服系统因其灵活性、成本效益和技术先进性&#xff0c;成为众多企业提升客户…...

大数据技术与应用——数据可视化(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 数据可视化 大…...

大数据之Hbase环境安装

Hbase软件版本下载地址&#xff1a; http://mirror.bit.edu.cn/apache/hbase/ 1. 集群环境 Master 172.16.11.97 Slave1 172.16.11.98 Slave2 172.16.11.99 2. 下载软件包 #Master wget http://archive.apache.org/dist/hbase/0.98.24/hbase-0.98.24-hadoop1-bin.tar.gz…...

Node.js day-01

01.Node.js 讲解 什么是 Node.js&#xff0c;有什么用&#xff0c;为何能独立执行 JS 代码&#xff0c;演示安装和执行 JS 文件内代码 Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff0c;因为这个特点&#xff0c;它可以用来编写服务器后端…...

OpenCV相机标定与3D重建(25)计算两个三维点集之间的最优仿射变换矩阵(3x4)函数estimateAffine3D()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算两个3D点集之间的最优仿射变换。 它计算 [ x y z ] [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] [ X Y Z ] [ b 1 b 2 b 3 ] \beg…...

SQL 中 INNER JOIN 和 LEFT JOIN 的区别和用法

在数据库语言 SQL 中&#xff0c;连接 (也称进行表结合操作)是一种常见的操作&#xff0c;用于将多个数据表格核实关联进行查询。常见的连接类型中&#xff0c; INNER JOIN 和 LEFT JOIN 是最基本且最常用的。下面将给出完整的区别和用法说明。 1. 基本概念 INNER JOIN (内连…...

【计算机网络】lab2 Ethernet(链路层Ethernet frame结构细节)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;各种软件安装与配置_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. …...

2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)

首先到官网上下载安装包&#xff1a;http://www.mysql.com 点击下载&#xff0c;拉到最下面&#xff0c;点击社区版下载 windows用户点击下面适用于windows的安装程序 点击下载&#xff0c;网络条件好可以点第一个&#xff0c;怕下着下着断了点第二个离线下载 双击下载好的安装…...

提升PHP技能:18个实用高级特性

掌握PHP基础知识只是第一步。 深入了解这18个强大的PHP特性&#xff0c;将显著提升您的开发效率和代码质量。 1、超越 __construct() 的魔法方法 虽然 __construct() 为大多数开发者所熟知&#xff0c;PHP 却提供了更多强大的魔术方法&#xff0c;例如&#xff1a; class Da…...

QT数据库(三):QSqlQuery使用

QSqlQuery 简介 QSqlQuery 是能运行任何 SQL 语句的类&#xff0c;如 SELECT、INSERT、UPDATE、DELETE 等 SQL 语句。所以使用 QSqlQuery 几乎能进行任何操作&#xff0c;例如创建数据表、修改数据表的字段定义、进行数据统计等。如果运行的是 SELECT 语句&#xff0c;它查询…...

【机器学习】在向量的流光中,揽数理星河为衣,以线性代数为钥,轻启机器学习黎明的瑰丽诗章

文章目录 线性代数入门&#xff1a;机器学习零基础小白指南前言一、向量&#xff1a;数据的基本单元1.1 什么是向量&#xff1f;1.1.1 举个例子&#xff1a; 1.2 向量的表示与维度1.2.1 向量的维度1.2.2 向量的表示方法 1.3 向量的基本运算1.3.1 向量加法1.3.2 向量的数乘1.3.3…...

设计模式详解(十一):模板方法——Template Method

Template Method 设计模式 1. 概述 Template Method 是一种行为设计模式&#xff0c;它定义了一个算法的框架&#xff0c;并允许子类在不改变算法结构的前提下重新定义算法中的某些步骤。 在 Template Method 模式中&#xff1a; 父类&#xff08;抽象类&#xff09;定义了…...

使用 DeepSpeed 微调 OPT 基础语言模型

文章目录 OPT 基础语言模型Using OPT with DeepSpeedmain.py 解析1、导入库和模块2、解析命令行参数3、main 函数3.1 设备与分布式初始化3.2 模型与数据准备3.3 定义评估函数3.4 优化器与学习率调度器设置3.5 使用 deepspeed 进行模型等初始化3.6 训练循环3.7 模型保存 4、dsch…...

DPDK用户态协议栈-TCP Posix API 2

tcp posix api send发送 ssize_t nsend(int sockfd, const void *buf, size_t len, __attribute__((unused))int flags) {ssize_t length 0;void* hostinfo get_host_fromfd(sockfd);if (hostinfo NULL) {return -1;}struct ln_tcp_stream* stream (struct ln_tcp_stream…...

打造微信小程序中的视频播放交互体验:videoUI组件库实战

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;本项目介绍如何利用 videoUI 组件库在微信小程序中实现视频切换播放和全屏播放功能。涵盖微信小程序开发基础、 <video> 组件使用、视频切换逻辑、全屏播放实现以及 videoUI 库的应用。为开发者提供…...

Django REST framework(DRF)在处理不同请求方法时的完整流程

文章目录 一、POST 请求创建对象的流程二、GET 请求获取对象列表的流程三、GET 请求获取单个对象的流程四、PUT/PATCH 请求更新对象的流程五、自定义方法的流程自定义 GET 方法自定义 POST 方法 一、POST 请求创建对象的流程 请求到达视图层 方法调用&#xff1a; dispatch说明…...

【Hive】-- hive 3.1.3 伪分布式部署(单节点)

1、环境准备 1.1、版本选择 apache hive 3.1.3 apache hadoop 3.1.0 oracle jdk 1.8 mysql 8.0.15 操作系统:Mac os 10.151.2、软件下载 https://archive.apache.org/dist/hive/ https://archive.apache.org/dist/hadoop/ 1.3、解压 tar -zxvf apache-hive-4.0.0-bin.tar…...

unity 雷达

unity 雷达 首先去商店下载TouchScript插件 导入的时候勾选Enable TUIO 然后把预制体Cursors和TouchManager拖上 最后把TuioInput这个脚本挂上 脚本上的端口号尽量不改...

Visual Studio 2022 安装和管理 GitHub Copilot

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…...

Python从0到100(七十三):Python OpenCV-OpenCV实现手势虚拟拖拽

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…...

利用notepad++删除特定关键字所在的行

1、按组合键Ctrl H&#xff0c;查找模式选择 ‘正则表达式’&#xff0c;不选 ‘.匹配新行’ 2、查找目标输入 &#xff1a; ^.*关键字.*\r\n (不保留空行) ^.*关键字.*$ (保留空行)3、替换为&#xff1a;&#xff08;空&#xff09; 配置界面参考下图&#xff1a; ​​…...

Alan Chhabra:MongoDB AI应用程序计划(MAAP) 为客户提供价值

MongoDB全球合作伙伴执行副总裁 Alan Chhabra 每当有人向我问询MongoDB&#xff0c;我都会说他们很可能在不觉之间已经与MongoDB有过交集。事实上&#xff0c;包括70%财富百强在内的许多世界领先企业公司都在使用MongoDB。我们在MongoDB所做的一切都是为了服务客户&#xff0c…...

FFmpeg 实战解复用与复用

FFmpeg FFmpeg 是一个功能强大、广泛使用的多媒体处理工具,可以处理音频、视频、字幕以及多种容器格式的操作。它支持解码、编码、复用、解复用、流式传输、过滤等功能。以下是关于 FFmpeg 的一些核心信息和操作说明: 核心组件 FFmpeg 是由以下几个主要库组成的: libavcode…...

数据结构(顺序表)JAVA方法的介绍

前言 在 Java 中&#xff0c;集合类&#xff08;Collections&#xff09;是构建高效程序的核心组件之一&#xff0c;而 List 接口作为集合框架中的重要一员&#xff0c;是一个有序、可重复的元素集合。与 Set 接口不同&#xff0c;List 保证了元素的顺序性&#xff0c;并允许存…...

电商商品详情API接口(item get)数据分析上货

电商商品详情API接口&#xff08;item get&#xff09;在数据分析与商品上货方面发挥着重要作用。以下是对这两个方面的详细探讨&#xff1a; 一、数据分析 数据源获取&#xff1a; 商品详情API接口提供了丰富的数据源&#xff0c;包括商品的标题、价格、库存、描述、图片、用…...

supervisor使用详解

0、介绍 supervisor 是一个用 Python 编写的客户端/服务器系统&#xff0c;它允许用户在类 UNIX 操作系统&#xff08;如 Linux&#xff09;上监控和控制进程。supervisor 并不是一个分布式调度框架&#xff0c;而是一个进程管理工具&#xff0c;它可以用来启动、停止和重启程…...

结合开源低代码-microi吾码 阿里云建桶,以及minio文件转移阿里云oss

前言 最近在工作中&#xff0c;碰到一开始一个小程序的照片和视频都放在公司的minio服务器上存储。但日积月累的&#xff0c;而且这个客户的访问量也大&#xff0c;照片和视频每天的存储空间也很大&#xff0c;这每天也是比不菲的费用&#xff0c;而且也会加慢后台的访问速度。…...

如何为IntelliJ IDEA配置JVM参数

在使用IntelliJ IDEA进行Java开发时&#xff0c;合理配置JVM参数对于优化项目性能和资源管理至关重要。IntelliJ IDEA提供了两种方便的方式来设置JVM参数&#xff0c;以确保你的应用程序能够在最佳状态下运行。本文将详细介绍这两种方法&#xff1a;通过工具栏编辑配置和通过服…...

关于SQL注入的面试题及经验分享

Q&#xff1a;简述数据库的存储引擎 A&#xff1a;数据库存储引擎是数据库底层软件组织&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能&#xff0c;使用不…...

ISP(Image Signal Processor)——HDR技术总结

传统多帧融合技术 拍摄一系列不同曝光时长的图像帧&#xff08;LDR&#xff09;&#xff0c;然后使用融合算法进行融合成HDR图像。 融合算法可以分为两种 基于照度图估计的融合 基于照度估计需要拟合相机响应函数&#xff0c;详细可以参考如下论文&#xff1a; Recovering H…...

Python字符串及正则表达式(十):字符串常用操作、字符串编码转换

前言&#xff1a;在编程的世界里&#xff0c;字符串无处不在。它们是构建用户界面、存储数据、进行通信的基础元素。无论是财务系统的总账报表、电子游戏的比赛结果&#xff0c;还是火车站的列车时刻表&#xff0c;这些信息最终都需要以文本的形式呈现给用户。这些文本的背后&a…...

测试工程师八股文04|计算机网络 和 其他

一、计算机网络 1、http和https的区别 HTTP和HTTPS是用于在互联网上传输数据的协议。它们都是应用层协议&#xff0c;建立在TCP/IP协议栈之上&#xff0c;用于客户端&#xff08;如浏览器&#xff09;和服务器之间的通信。 ①http和https的主要区别在于安全性。http是一种明…...

Codeforces Global Round 27的C题

题目大意 给定一个n,n>5 ans0 ans&a1|a2&a3|a4&a5...an,数组a是一个排列 下标是奇数让ans对其进行&操作,否则进行|操作,求ans能达到的最大值. 分奇偶来讨论,在n为奇数的情况下,最后一次操作是|,在n为偶数的情况下,最后一次操作是&. n二进制最高位的计算…...

【Linux】Nginx一个域名https一个地址配置多个项目【项目实战】

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…...

第36次CCF计算机软件能力认证 梦境巡查

梦境巡查 刷新 时间限制&#xff1a; 1.0 秒 空间限制&#xff1a; 512 MiB 相关文件&#xff1a; 题目目录 题目背景 传说每当月光遍布西西艾弗岛&#xff0c;总有一道身影默默守护着居民们的美梦。 题目描述 梦境中的西西艾弗岛由 &#xfffd;1n1 个区域组成。梦境…...

[机器学习]AdaBoost(数学原理 + 例子解释 + 代码实战)

AdaBoost AdaBoost&#xff08;Adaptive Boosting&#xff09;是一种Boosting算法&#xff0c;它通过迭代地训练弱分类器并将它们组合成一个强分类器来提高分类性能。 AdaBoost算法的特点是它能够自适应地调整样本的权重&#xff0c;使那些被错误分类的样本在后续的训练中得到…...

传统零售商商业升级的核心动机及与互联网业务融合的探索——以 AI 智能名片 S2B2C 商城小程序源码为例

摘要&#xff1a;本文旨在探讨传统零售商尝试商业升级的核心动机&#xff0c;并以 AI 智能名片 S2B2C 商城小程序源码为典型案例&#xff0c;分析互联网业务模式如何助力传统零售商转型。通过剖析传统零售增长模式的局限以及互联网业务在增长速度、迭代试错和用户需求洞察方面的…...

飞牛 fnos docker镜像部署OpenSpeedtest宽带网速测试教程

penSpeedTest是一个跨平台的网络测速应用&#xff0c;支持不同操作系统的浏览器&#xff0c;无需安装额外软件或插件。您可以在iPhone、iPad、Android设备、Windows和Linux系统的电脑、手机和平板上直接测试设备与NAS之间的宽带速度。 通过这个可以排查出设备与NAS之间的传输速…...

【C++】list

OK&#xff0c;最近浅浅学习了STL的list&#xff0c;有兴趣不妨垂阅&#xff01; 目录 1.constructor 2.assign 3.insert 4.erase 5. reverse 6.swap 7.merge 8.unique 9.splice 10.小知识 同样的&#xff0c;使用list 需要包含一个头文件<list>。<list&g…...

keepalive的高可用集群

一、keepalived概述 1.keepalive的工作原理 keepalive是专门为了lvs集群开发出来的&#xff0c;但是适用场景不仅仅局限于lvs。而且keepalive为后台的真实服务器做了一个健康检查&#xff0c;当服务不可用时&#xff0c;会自动的移除ipvs的转发策略&#xff0c;服务恢复时&…...

HTTP 协议报文结构 | 返回状态码详解

注&#xff1a;本文为 “HTTP 历史 | 协议报文结构 | 返回状态码” 相关文章合辑。 未整理去重。 HTTP 历史 wangjunliang 最后更新: 2024/3/16 上午10:29 超文本传输协议(英语:HyperTextTransferProtocol,缩写:HTTP)是 万维网(World Wide Web)的基础协议&#xff61;自 蒂姆…...

如何保证开源AI呼入机器人和AI呼出机器人的服务质量?

如何保证开源AI呼入机器人和AI呼出机器人的服务质量&#xff1f; 确保开源AI呼入机器人和AI呼出机器人的服务质量是企业成功部署这些智能系统的关键。高质量的服务不仅能够提高客户满意度&#xff0c;还能增强企业的市场竞争力。以下是实现这一目标的几个关键策略和技术措施&a…...

C++day7

#include <iostream>using namespace std; template <class T> class mylist{ public:struct Link{T val;Link* next;Link* front;};//增void insert(T val);//删void remove(T val);//改mylist& operator[](int index);//排序void Sort();//遍历void show();/…...