C# 探险之旅:第三十节 - 类型class(继承Inheritance) —— 当“儿子”继承“老爸”的遗产

嘿,探险家们!欢迎再次踏上我们的C#奇幻旅程。今天,我们要聊一个既有趣又实用的话题——继承(Inheritance)!想象一下,如果你的“儿子”能够继承“老爸”的遗产,那编程世界里的对象们也能这么做哦!不过,这里的“遗产”可不是金银财宝,而是类和它的成员。

场景设定:动物王国的继承

想象一下,我们身处一个动物王国,这里有各种各样的动物,比如狗(Dog)、猫(Cat)和鸟(Bird)。它们虽然各不相同,但都有一些共同的特征,比如都能吃(Eat)和叫(Bark/Meow/Chirp)。在C#的世界里,我们可以通过继承来实现这种“共同特征”的传递。

创建一个基类(父类)

首先,我们来定义一个基类(父类),就叫它Animal吧!这个类就像是一个“老爸”,它有一些基本的特征和行为。

public class Animal
{// 成员变量public string Name;// 构造函数public Animal(string name){Name = name;}// 成员方法public void Eat(){Console.WriteLine($"{Name}正在吃...");}// 另一个成员方法,等待被子类重写public virtual void MakeSound(){Console.WriteLine($"{Name}发出了一些声音...");}
}

 

在这个Animal类里,我们定义了一个成员变量Name,一个构造函数来初始化这个变量,还有两个成员方法:EatMakeSound。注意,MakeSound方法被标记为virtual,这意味着它可以在子类中被重写。

创建子类(继承父类)

接下来,我们来创建一些子类,它们将继承Animal类的“遗产”。

public class Dog : Animal
{// 构造函数public Dog(string name) : base(name){}// 重写父类的MakeSound方法public override void MakeSound(){Console.WriteLine($"{Name}汪汪叫!");}
}public class Cat : Animal
{// 构造函数public Cat(string name) : base(name){}// 重写父类的MakeSound方法public override void MakeSound(){Console.WriteLine($"{Name}喵喵叫!");}
}

在这个例子里,我们创建了两个子类:DogCat。它们都继承了Animal类的成员变量和方法,并且重写了MakeSound方法,以体现它们各自独特的叫声。

使用继承

最后,我们来创建一些对象,看看继承是如何工作的。

class Program
{static void Main(string[] args){// 创建Dog对象Dog dog = new Dog("旺财");dog.Eat();dog.MakeSound();// 创建Cat对象Cat cat = new Cat("咪咪");cat.Eat();cat.MakeSound();}
}

在这个例子里,我们创建了一个Dog对象和一个Cat对象,并且调用了它们的EatMakeSound方法。你会看到,虽然DogCat类都有自己独特的叫声,但它们都继承了Animal类的Eat方法。

幽默小结

想象一下,如果你的“儿子”能够继承你所有的财产和技能,那他的人生岂不是轻松多了?在C#的世界里,子类也能继承父类的“遗产”,从而避免重复编写相同的代码。这不仅让编程变得更加高效,还让代码结构更加清晰易懂。

通过今天的探险,你学会了如何使用继承来创建更加灵活和可扩展的代码结构。是不是觉得编程世界也充满了家族和传承的气息呢?

好了,今天的探险就到这里。记住,继承就像是“儿子”继承“老爸”的遗产,它让子类能够继承父类的特征和行为。下次探险,我们再见!

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

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

相关文章

排序算法(2)——快速排序

目录 1. 实现方式 1.1 霍尔法 ​ 1.2 挖坑法 1.3 前后指针法 2. 复杂度分析 3. 快速排序优化 3.1 三数取中 3.2 小区间使用插入排序 3.3 非递归实现 快速排序是英国计算机科学家托尼・霍尔(C. A. R. Hoare)在 1960 年年提出的一种二叉树结构的交…

【python】最新版抖音js逆向拿到数据,非常详细教程(附完整代码)

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

apollo2.0.0本地调试运行

一、下载源码 https://github.com/apolloconfig/apollo/tree/v2.0.0 二、本地环境 jdk 1.8 mysql 5.7 maven 3.6.3 三、IDEA运行源码 IDEA直接Open打开项目即可 需要依次启动configservice、adminservice、portal三个服务 基于apollo-assembly模块的ApolloApplication…

STP(生成树协议)

STP的基本概念 概述 STP是一个用于局域网中消除环路的协议。运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动…

3D 生成重建039-Edify 3D:Nvidia的3D生成大模型

3D 生成重建039-Edify 3D:Nvidia的3D生成大模型 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 文档介绍了Edify 3D,一种为高质量的3D资产生成而设计的高级解决方案。首先在多个视点上合成了所描述对象的RGB和表面法线图像正在使用扩散模型。然后使用多视图…

Maven学习(依赖版本维护、依赖传递、解决Maven依赖冲突的3种方式)

目录 一、Maven的依赖版本维护。 (1)为什么需要依赖版本维护? (2)依赖统一管理的具体操作步骤。 第一步。在pom.xml文件中使用标签定义jar包的版本。 第二步。在的对应jar的中使用"${}"引入上面定义好的版本…

CV(4)--边缘提取和相机模型

前言 仅记录学习过程,有问题欢迎讨论 边缘提取(涉及语义分割): 图象的边缘是指图象局部区域亮度变化显著的部分,也有正负之分,暗到亮为正 求边缘的幅度:sobel,Canny算子 图像分高频分量和低…

鸿蒙项目云捐助第三讲鸿蒙App应用的启动页实现

鸿蒙项目云捐助第三讲鸿蒙App应用的启动页实现 对于移动端的应用,一般启动app的时候,首先显示启动页,启动页中显示出该应用一些介绍内容,通过这个介绍内容可以了解这个应用具体处理的内容。 进入启动后,通过滑动启动…

flink sink kafka的事务提交现象猜想

现象 查看flink源码时 sink kafka有事务提交机制,查看源码发现是使用两阶段提交策略,而事务提交是checkpoint完成后才执行,那么如果checkpoint设置间隔时间比较长时,事务未提交之前,后端应该消费不到数据&#xff0c…

Mumu模拟器12开启ADB调试方法

在使用安卓模拟器进行开发或调试时,ADB(Android Debug Bridge)是一项不可或缺的工具。大多数模拟器默认开启了ADB调试功能,但在安装最新版的 Mumu模拟器12 时,可能会遇到 adb devices 无法识别设备的问题。 问题描述 …

C/C++中的宏定义

在C程序中,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来像函数。预处理器用复制宏代码的方式代替函数调用,省去了参数压栈、生成汇编语言的CALL调用、返回参数、执行return等过程,从而提高了速度,避免函数…

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(二)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(二) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…

批量导出工作簿中高清图片-Excel易用宝

我同事在工作簿中做了三个图表,现在需要将工作簿中的图标导出保存为高清图片,通过右键另存为保存的图片并非高清图片,其实要把Excel工作簿中的图表或图片对象导出为高清图片也很简单。 单击Excel易用宝 Plus,导出高清图片。 在导出…

测试工程师八股文05|功能测试、业务测试

一、基础概念 1、软件测试分类 1️⃣按照软件产生的阶段划分 单元测试:针对程序源代码进行测试【开发自测】集成测试:针对模块之间功能交互进行测试系统测试:对整个系统(功能、非功能)进行全面测试验收测试&#xff…

“AI全网络深度学习系统:开启智能时代的新篇章

嘿,大家好!今天咱们来聊聊一个特别前沿的话题——AI全网络深度学习系统。这名字听起来是不是有点像科幻电影里的玩意儿?但其实,它已经悄悄地走进了我们的生活,而且正在改变我们的工作方式。 首先,咱们得搞清…

【Linux|计算机网络】HTTPS工作原理与安全机制详解

目录 1、HTTPS是什么? 2、概念准备 2.1.什么是加密、解密、密钥 2.2.为什么要加密 2.3.常见的加密方式 1.对称加密 2.非对称加密 2.4.数据摘要 && 数据指纹 2.5. 数字签名 3.HTTPS 的工作过程探究 方案 1 - 只使用对称加密 方案 2 - 只使用非对…

shell脚本自动发布Java应用

单体项目或定制化小应用,频繁发布会有些麻烦,用脚本实现git提交完代码自动发布,并完成jar包备份 1.前提条件:linux安装了JDK、Maven、Git 安装参考链接: jdk安装 https://blog.csdn.net/weixin_44904239/article/de…

搭建自己的wiki知识库(重新整理)

写在前面: 之前写过一篇,因为这次修改的内容比较多,所以不想在原基础上修改了,还是重新整理一篇吧。搭建wiki知识库,可以使用在线文档,如xx笔记、xx文档、xx博客、git仓库(如:GitHu…

【Python网络爬虫笔记】10- os库存储爬取数据

os库的作用 操作系统交互:os库提供了一种使用Python与操作系统进行交互的方式。使用os库来创建用于存储爬取数据的文件夹,或者获取当前工作目录的路径,以便将爬取的数据存储在合适的位置。环境变量操作:可以读取和设置环境变量。在…

MySQL:表的内置函数

目录 一. 日期函数 二. 字符串函数 三. 数学函数​编辑 四. 其他函数 博客开始为各位读者介绍一个投递简历的平台:万码优才 专属于程序员的投递平台,大家快去试试吧!!! 此篇博客讲解MySQL中关于表的内置函数。…