继承

虚方法 (重写)

virtual 虚方法的关键字  

override 重写的关键字 

练习:


继承

继承:很多类有相似的数据  相同的属性 相同的方法  也有不同的  这个时候就可以使用继承 让多个类去继承自某个具有相同数据的基类(父类) 这样在子类中就不用再定义这些相同的数据了

优点:便于维护代码 数据相同的类 只要需要在基类(父类)中定义即可 然后让拥有相同数据的派生类(子类)去继承这个父类就可以了   后期修改数据的时候 只需要修改父类中的定义就可以了

多重继承(多继承): 可以有多个基类 每个子类都可以选择继承哪个基类 但是不能同时继承多个基类  c# 是不支持多重继承的  如果要完成这种模式 使用接口接口 

//定义一个基类(父类)
internal class Boss
{public int HP { get; set; }public int SP { get; set; }public void Move(){Console.WriteLine("移动");}public  void BossAi(){Console.WriteLine("大招");}
}
//实现继承: ( : Boss )这样就代表了 当前这个Class1这个类 继承了 Boss类 
//Boos就是基类(父类) Class1就是派生类(子类)   父类中的数据成员 方法成员 在子类中也可以使用internal class Class1 : Boss
{//以下注释部分可以省略,因为在父类Boss中已经存在//public int HP { get; set; }//public int SP { get; set; }//public void Move()//{//    Console.WriteLine("移动");//}//public void Ai()//{//    Console.WriteLine("普攻");//}// 小兵 自己的数据public double Heigth { get; set; }public void minAi(){Console.WriteLine("Min攻击");}}
//Class2继承Class1
internal class Class2 :Class1
{}
static void Main(string[] args)
{Boss b = new Boss();b.HP = 100;b.SP = 100;Class1 c1 = new Class1();c1.HP = 100;//Class1  继承Boss类之后的操作    第一个继承Boss的子类Class1 c2 = new Class1();c2.HP = 100;Console.WriteLine(c2.HP);c2.Move();c2.minAi();//Class2 第一个继承Class1的子类,第二个继承Boss的子类Class2 c3 = new Class2();c3.Move();c3.HP = 100;Console.WriteLine(c3.HP);c3.BossAi();c3.minAi();
}

虚方法 (重写)

virtual 虚方法的关键字  

 将方法升级为虚方法  然后就可以在子类中重写逻辑了  在子类中重写之后 就属于子类的逻  辑  父类中的不会改变

internal class Boss
{public int HP { get; set; }public int SP { get; set; }              public virtual void Move(){Console.WriteLine("Boss只能左右移动");}public void AI(){Console.WriteLine("大招");}
}

override 重写的关键字 

如果想要重写父类中的某个方法逻辑 那么父类中的方法就可以升级为虚方法  然后在子类中对其进行重写。如果父类中的方法没有声明为虚方法 子类就不能重写

internal class Class1 :Boss
{public override void Move(){Console.WriteLine("小怪随意移动");}//隐藏方法public new void AI(){Console.WriteLine("普通攻击");}
}
 static void Main(string[] args){Class1 c1 = new Class1();//子类中重新父类Move方法之后的方法c1.Move();}

练习:

现在 有 火车  飞机  轮船 汽车 几个类  属性有:  价格 速度 核载人数  方法有: 运行方式  到站方式 运用继承与虚方法 重写的形式 将它们各自的状态 完善

 static void Main(string[] args){Car a = new Car();steamship b=new steamship();plane c=new plane();a.Price = 20;   a.Speed = 60;    a.Peoplenum = 5;a.Run ();   a.Stop ();  a.show ();b.Price = 2000; b.Speed = 1000; b.Peoplenum = 50;b.Run();    b.Stop();   b.show();c.Price = 1000;    c.Speed = 800;   c.Peoplenum = 100;c.Run();    c.Stop();   c.show();}
//定义一个交通工具的基类
internal class vehicle
{public int Price { get; set; }public int Speed { get; set; }public int Peoplenum { get; set; }public virtual void Run() { }public virtual void Stop() { }public void show() { Console.WriteLine($"价格:{Price} 速度:{Speed} 核载人数:{Peoplenum}"); }}
//汽车
internal class Car : vehicle
{public override  void Run() { Console.WriteLine("起步"); }public override void Stop() { Console.WriteLine("熄火"); }}
 //轮船internal class steamship : vehicle{public override void Run() { Console.WriteLine("漂流"); }public override void Stop() { Console.WriteLine("抛锚"); }}
 //飞机internal class plane: vehicle{public override void Run() { Console.WriteLine("飞行"); }public override void Stop() { Console.WriteLine("降落"); }}

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

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

相关文章

Java 堆(优先级队列)

文章目录优先级队列模拟实现优先级队列向下调整建堆向上调整建堆堆的删除priorityQueue构造方法大根堆和小根堆的向上调整比较方法扩容面试题堆排序优先级队列 priorityqueue:底层是一颗完全二叉树 小根堆:根比左右孩子都小大根堆:根比左右…

在.NET Core API 微服务中使用 gRPC:从通信模式到场景选型

目录 一、gRPC 基础:为什么它适合微服务? 二、gRPC 的四种通信模式及.NET Core 实现 1. 一元 RPC(Unary RPC):最基础的请求 - 响应模式 2. 服务器流式 RPC(Server Streaming RPC)&#xff1…

HTML零基础快速入门教程(详细篇)

本文详细介绍HTML零基础快速入门的基础知识,包括HTML的介绍、语言的一些实际作用、语法规范注意,如标签结构、标签属性、大小写不敏感等,还介绍了HTML文件的具体书写规则,如文件扩展名、文档类型声明和HTML结构以及具体的一些HTML…

LLM评测框架Ragas:SQL指标(解决了Ollama推理框架不支持的问题)

SQL类的度量指标是指运行SQL后的结果和预期之间的一个度量值。 datacompy score datacompy score 使用DataCompy(一个比较pandas的数据格式的python类,所以需要按照datacompy:pip install datacompy),默认是按照rows比较,也可以设置按照columns比较,这个事通过mode参数…

ubuntu24 ros2 jazzy

安装2 software & update 选择其它 安装 一、前提准备 检查操作系统版本: 确保你的系统版本是Ubuntu 24.04。你可以通过运行lsb_release -a命令来检查当前的系统版本。 设置UTF-8支持: ROS 2需要UTF-8编码支持。你可以通过以下命令来检查和设置UTF…

设备虚拟化技术

设备虚拟化技术概述设备虚拟化技术通过软件模拟物理硬件设备,使多个操作系统或应用程序能够共享同一台物理设备。它广泛应用于云计算、服务器整合和测试环境等领域。核心目标是提高资源利用率、隔离性和灵活性。•当接入的用户数增加到原交换机端口密度不能满足接入…

开发避坑短篇(3):解决@vitejs plugin-vue@5.0.5对Vite^5.0.0的依赖冲突

异常信息 # npm resolution error reportWhile resolving:system3.8.8 Found: vite6.2.3 node_modules/vitedev vite"6.2.3" from the root projectCould not resolve dependency: peer vite"^5.0.0" from vitejs/plugin-vue5.0.5 node_modules/vitejs/plu…

k8s快速部署(亲测无坑)

文章目录k8s快速部署(亲测无坑)一、网络划分二、CentOS7设置 标题固定IP和阿里云YUM源三、主机环境配置四、虚拟机的拷贝五、安装docker(每台主机都需要安装)六、安装kubelet,kubeadm,kubectl(每台机器都需要执行)遇到的问题参考文档k8s快速部署&#xf…

简易RAG问答引擎的构建与体验

RAG(检索增强生成)是结合检索与生成式 AI 的技术框架。核心逻辑是先从外部知识库精准检索相关信息,再将其作为上下文输入大模型生成回答。技术上依赖检索引擎(如向量数据库、BM25)、大语言模型(如 GPT、LLa…

C++11特性学习 Day1

nullptr对于c中null (void*)0,所以在为函数传参传入0时,无法清楚地分辨是int类型的0还是指的是空指针null在C11中清晰的将空指针变为了nullptr,0专指int型的数字0override关键字在子类中对父类的函数的覆写之后加上override关键字&#xff0…

微算法科技(NASDAQ: MLGO)探索优化量子纠错算法,提升量子算法准确性

随着量子计算技术的飞速发展,量子计算机在解决复杂计算问题上的潜力日益显现。然而,量子计算面临的一个重大挑战是量子比特的脆弱性,即量子比特容易受到环境噪声和干扰的影响,导致量子态的塌缩和计算结果的错误。微算法科技&#…

MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉

MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉由于老产品即时通讯私有化软件就是采用MongoDB ,但是版本实在太低,要做大更新,其次针对10年前完美运营的项目来到10年后的现在就不一定行,优雅…

Kotlin 中的单例模式(Singleton)与对象声明

在 Kotlin 中,类描述的是一种通用结构,可以多次实例化,也可以用多种方式实例化。但有时我们只需要单个实例,不多不少。单例模式能帮你更好地组织代码,把相关的方法聚合在一起。 单例模式是什么? 单例模式是…

Shell 编程基础入门从认识到实战

对于刚接触 Linux 或 Unix 系统的开发者来说,Shell 脚本往往是自动化操作的第一道门槛。它不像 Python 那样语法简洁,也不像 Java 那样有完善的面向对象体系,但却能以极少的代码实现强大的系统管理功能。本文将从 Shell 的基本概念讲起&#…

混合遗传粒子群算法在光伏系统MPPT中的应用研究

混合遗传粒子群算法在光伏系统MPPT中的应用研究 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,觉得好请收藏。点击跳转到网站。 摘要 本文针对光伏系统最大功率点跟踪(MPPT)问题&#xff0…

机器视觉的布料丝印应用

在纺织印染行业,布料丝印工艺的精度直接决定产品外观质量与市场竞争力。传统丝印设备依赖机械定位与人工校准,面对高密度图案、柔性面料或复杂纹理时,易出现套色偏移、油墨渗透不均等问题,导致良品率波动与生产成本攀升。 随着机…

前端常用类库

常用类库 类库作用 类库可以帮助我们快速实现项目业务的开发与功能的实现, 帮助我们解放劳动力提高生产效率, 前端中的类库与框架都是由原生javascript编写, 提供给其他开发者应用于某一业务环境或者需求。一般有开发者/团队开源维护. 优秀的类库需要具备高度封装可用, 稳定, …

通俗易懂循环神经网络(RNN)指南

本文用直观类比、图表和代码,带你轻松理解RNN及其变体(LSTM、GRU、双向RNN)的原理和应用。什么是循环神经网络 循环神经网络(Recurrent Neural Network, RNN)是一类专门用于处理序列数据的神经网络。与前馈神经网络不同…

【SVM】支持向量机实例合集

基于Java的SVM(支持向量机)实例合集 以下是一个基于Java的SVM(支持向量机)实例合集,包含核心代码示例和应用场景说明。这些例子基于流行的机器学习库(如LIBSVM、Weka、JSAT)实现。 数据准备与加载 使用LIBSVM格式加载数据集: // 加载LIBSVM格式数据 svm_problem pr…

Python100个库分享第38个—lxml(爬虫篇)

目录专栏导读📚 库简介🎯 主要特点🛠️ 安装方法Windows安装Linux/macOS安装验证安装🚀 快速入门基本使用流程HTML vs XML解析🔍 核心功能详解1. XPath选择器2. CSS选择器支持3. 元素操作🕷️ 实战爬虫案例…