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

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

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

相关文章

Day9 神经网络的偏导数基础

多变量函数与神经网络 在神经网络中,我们经常遇到多变量函数。这些函数通常描述了网络的输入、权重、偏置与输出之间的关系。例如,一个简单的神经元输出可以表示为: z f ( w 1 x 1 w 2 x 2 … w n x n b ) z f(w_1x_1 w_2x_2 \ldots…

map和set题目练习

一、习题一:随机链表的复制 1.1题目详情 1.2思路 在没有学习map和set之前,解决这道题最大的问题就在于无法建立原链表与拷贝链表的映射关系,只能通过在原链表每个节点后面新建一个新的链表来进行节点间的对应,而学习了map之后&a…

C语言入门(一):A + B _ 基础输入输出

前言 本专栏记录C语言入门100例,这是第(一)例。 目录 一、【例题1】 1、题目描述 2、代码详解 二、【例题2】 1、题目描述 2、代码详解 三、【例题3】 1、题目描述 2、代码详解 四、【例题4】 1、题目描述 2、代码详解 一、【例…

渗透测试学习笔记(五)网络

一.IP地址 1. IP地址详解 ip地址是唯一标识,一段网络编码局域网(内网):交换机-网线-pcx.x.x.x 32位置2进制(0-255) IP地址五大类 IP类型IP范围A类0.0.0.0 到 127.255.255.255B类128.0.0.0 到191.255.25…

《自制编译器》--青木峰郎 -读书笔记 编译hello

在该书刚开始编译hello.cb时就遇到了问题。 本人用的是wsl,环境如下, 由于是64位,因此根据书中的提示,从git上下载了64位的cb编译器 cbc-64bit 问题一: 通过如下命令编译时,总是报错。 cbc -Wa,"--32" -Wl,"-…

jedis使用及注意事项

Jedis Jedis 是一个 Java 客户端,用于与 Redis 数据库进行交互。它提供了一系列简单易用的 API,使得在 Java 应用程序中使用 Redis 变得非常方便。以下是 Jedis 的使用方法及一些注意事项。 Jedis的优势 Lettuce客户端及Jedis客户端比较如下:…

浏览器执行机制

主线程 任务1,任务2 微队列微队列任务1, 微队列任务2延时队列延时队列任务1, 延时队列任务2交互队列.... 事件循环的工作原理 主线程执行同步任务: 主线程首先执行所有同步任务(即栈中的任务)。这些任务会…

Java 基础知识——part 4

8.成员方法:Java中必须通过方法才能对类和对象的属性操作;成员方法只在类的内部声明并加以实现。一般声明成员变量后再声明方法。 9.方法定义 方法的返回值是向外界输出的信息,方法类型和返回值类型同;返回值通过return返回&…

C/S软件授权注册系统(Winform+WebApi+.NET8+EFCore版)

适用软件:C/S系统、Winform桌面应用软件。 运行平台:Windows .NETCore,.NET8 开发工具:Visual Studio 2022,C#语言 数据库:Microsoft SQLServer 2012,Oracle 21c,MySQL8&#xf…

监控易 IDC 数据中心一体化智能运维平台:新质生产力的典范

一、引言 在当今数字化飞速发展的时代,IDC 数据中心作为信息产业的核心基础设施,其稳定、高效运行对于企业和社会的重要性不言而喻。随着数据量的爆炸式增长和业务复杂度的提升,传统的运维模式已难以满足需求,数据中心面临着诸多挑…

busybox学习——简单介绍

文章目录 简介官网源码目录结构构建 简介 BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任…

CTFHUB 信息泄露 备份文件下载-网站源码

根据提示应是猜测网站源码的备份文件,可以采用bp拼接文件名和后缀 开启bp抓包后设置第一个攻击点导入文件名 第二个攻击点导入后缀 开始暴力破解,有成功响应的 拼接到网站后缀后可以直接下载 解压缩后记事本的名字就是flag 总结: …

Latex 转换为 Word(使用GrindEQ )(英文转中文,毕业论文)

效果预览 第一步: 告诉chatgpt: 将latex格式中的英文翻译为中文(符号和公式不要动),给出latex格式第二步: Latex 转换为 Word(使用GrindEQ ) 视频 https://www.bilibili.com/video/BV1f242…

X射线衍射全岩分析在岩石学研究中的重要性

X射线衍射全岩分析在岩石学研究中的重要性 X射线衍射(XRD)全岩分析在岩石学研究中扮演着至关重要的角色,它是一种非破坏性的分析技术,能够提供岩石和矿物的精细结构信息。通过解析材料内部原子排列的特征,XRD不仅揭示了…

【Bolt.new + PromptCoder】三分钟还原油管主页

【Bolt.new PromptCoder】三分钟还原油管主页 PromptCoder官网:PromptCoder Bolt官网:https://bolt.new/ Bolt 是什么? Bolt.new 是一个提供创建全栈网络应用服务的平台。它允许用户通过提示(Prompt)、运行&#x…

定时/延时任务-万字解析Spring定时任务原理

文章目录 1. 概要2. EnableScheduling 注解3. Scheduled 注解4. postProcessAfterInitialization 解析4.1 createRunnable 5. 任务 Task 和子类6. ScheduledTaskRegistrar6.1 添加任务的逻辑6.2 调度器初始化6.3 调用时机 7. taskScheduler 类型7.1 ConcurrentTaskScheduler7.2…

JumpServer开源堡垒机搭建及使用

目录 一,产品介绍 二,功能介绍 三,系统架构 3.1 应用架构 3.2 组件说明 3.3 逻辑架构 3.3 逻辑架构 四,linux单机部署及方式选择 4.1 操作系统要求(JumpServer-v3系列版本) 4.1.1 数据库 4.1.3创建数据库参考 4.2 在线安装 4.2.1 环境访问 4.3 基于docker容…

ResNet网络:深度学习中的革命性架构

目录 ​编辑 引言 ResNet网络的特点 1. 残差块(Residual Block) 2. 恒等映射(Identity Mapping) 3. 深层网络训练 4. Batch Normalization 5. 全局平均池化 6. 灵活的结构 ResNet的应用案例 ResNet的研究进展 实战案例…

Node.js day-01

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

又要考试了

一、实现无名管道练习&#xff1a;父进程写入管道&#xff0c;子进程读取管道数据。 #include<myhead.h> int main(int argc, const char *argv[]) {int fd[2];char buff[1024]"王吕阳&#xff0c;崔庆权别卷了";char s[1024];if(pipe(fd)-1){perror("pi…