c#多态(override)的使用

方法重写(override):多态,通过父类类型对象,调用子类当中对应方法的实现。
细节:子类当中的override方法会“抹杀”父类当中对应virtual方法

不使用多态时,父类调用子类方法时,会调用父类的方法

internal class pet{public void shout(){Console.WriteLine("pet 叫");}public virtual void eat(){Console.WriteLine("pet eat food");}}internal class dog : pet{public new void shout(){Console.WriteLine("dog 叫");}public override void eat(){Console.WriteLine("dog eat food");}}

main方法通过里氏替换调用子类shout方法

 dog dog = new dog();pet pet = dog;pet.shout();//输出的是父类的方法 pet 叫

那如何可以,通过父类调用子类的实现呢?这就要使用多态了,方法的重写 ,父类方法使用 virtual修饰,子类同签名方法需要override修饰,如上面的eat方法。

main方法执行

 dog dog = new dog();pet pet = dog;pet.eat();//输出的是子类的eat方法 dog eat food

多态性使得代码更加灵活和可扩展,允许我们在不修改现有代码的情况下增加新的功能。它也是面向对象编程的重要特性之一,有助于实现代码的模块化和重用

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

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

相关文章

swaggo的一点小理解

如有错误,希望指出,谢谢! 很低级的概念不清,大佬嘴下留情。 1.关于swag的注释 我的理解是这些注释是专门提供给Swagger UI界面测试使用的,根据注释内容告诉swag文档这个函数应该有哪些参数,从什么路由走&…

HarmonyOS/OpenHarmony(Stage模型)应用开发单一手势(二)

三、拖动手势(PanGesture) .PanGestureOptions(value?:{ fingers?:number; direction?:PanDirection; distance?:number}) 拖动手势用于触发拖动手势事件,滑动达到最小滑动距离(默认值为5vp)时拖动手势识别成功&am…

关于已经安装了TorchCRF,导入时却提示“ModuleNotFoundError: No module named ‘torchcrf‘”的解决办法

应用python时,想导入torchcrf库 from torchcrf import CRF 但系统提示:ModuleNotFoundError: No module named torchcrf 在命令提示符里输入“pip list”检查已安装库,发现torchcrf已经安装 搞了半天,发现是大小写的问题&#x…

MATLAB/Python编程:绘制一维和二维的分布直方图

注1:本文系“MATLAB/Python的编程”系列之一,致力于使用Python和Matlab实现特定的功能。本次要实现的功能是:绘制一维和二维的分布直方图。 MATLAB/Python编程:绘制一维和二维的分布直方图 文章目录 MATLAB/Python编程:绘制一维和二维的分布直方图Python中的绘图安装matpl…

Locked勒索病毒:最新变种.locked袭击了您的计算机?

导言: 在今天的数字时代,勒索病毒已经不再是仅仅让数据变得不可访问的小威胁。 .locked 勒索病毒,作为其中的一种,以其高度复杂的加密算法和迅速变化的攻击手法而备受恶意分子喜爱。本文91数据恢复将带您深入了解 .locked 勒索病毒…

硅谷课堂1

文章目录 P1 项目概述P2—P12 MybatisPlus知识回顾P8 MybatisPlus实现逻辑删除P9 QueryWrapper使用P14 项目后端模块介绍P15 项目后端环境搭建P50—P53 整合腾讯云对象存储1、整合腾讯2、腾讯云示例3、讲师头像上传-后端代码P54—P60 课堂分类管理1、课堂分类查询2、课程分类导…

雪花算法生成的ID到前端后精度丢失

最近将id改为雪花算法方式生成,后端使用雪花算法生成id,在返回给前端的时候没有问题,但是在前端使用id反查数据的时候始终查询不到数据。 经过数据跟踪最终定位到是浏览器的问题,因为浏览器无法解析太长的数字,最终导…

IOS证书制作和IPA文件提交至开发者中心的极简工具

对于开发者来说,在没有Mac电脑或对Xcode等开发工具不熟悉的情况下,如何快速完成IOS证书制作和IPA文件提交至开发者中心一直是一个难题。但是现在,有了初雪云提供的极简工具,您可以轻松实现这两个任务,无需Mac电脑&…

7 | 计算每个键对应的平均值,并按降序排序

假设您有一个包含销售订单的RDD,其中每个元素是一个键值对,其中键表示产品名称,值表示销售数量。您希望按产品名称对销售订单进行分组,并计算每个产品的总销售数量。最后,希望获得每个产品的总销售数量以及按产品名称分组的详细销售订单列表。 计算每个键对应的总和和计数…

C语言练习8(巩固提升)

C语言练习8 编程题 前言 奋斗是曲折的,“为有牺牲多壮志,敢教日月换新天”,要奋斗就会有牺牲,我们要始终发扬大无畏精神和无私奉献精神。奋斗者是精神最为富足的人,也是最懂得幸福、最享受幸福的人。正如马克思所讲&am…

Scala入门,idea关联Scala

Scala 介绍 Scala是一种多规范的编程语言,它结合了面向对象编程(OOP)和函数式编程(FP)的特征,Scala的名字源于”Scalable language“,意为”可伸缩语言“。2003年开发的,并在JVM&a…

如何设计一个好的游戏剧情(Part 1:主题的设定)

提醒:此教程仅仅为作者的一些经验和感悟,非专业教程,若介意请前往网上搜集或者书本查阅相关资料! 前言:游戏为什么要有剧情——游戏剧情的重要性 游戏剧情的重要性难以低估。一个精彩的剧情可以让玩家感受到强烈的情感…

华为OD:敏感字段加密

题目描述: 给定一个由多个命令字组成的命令字符串: 1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号; 2、命令字之间以一个或多个下划线_进行分割; 3、可以通过两个双引号”"来标识包含下划线…

AK 微众银行 9.3 笔试 Java后端方向

T1(模拟,二分) (没看清买的糖果只有前缀&#xff0c;一开始用二分写了&#xff0c;后来意识到也没改了&#xff0c;简单写的话&#xff0c;直接模拟就好了) #include <bits/stdc.h>#define endl \nusing namespace std;const int N 50010;int n; int a[N];bool check(…

【分布式】Zookeeper

Java开发者视角下的Zookeeper—— 在什么场景下使用&#xff0c;怎么用 可以参考&#xff1a;https://zhuanlan.zhihu.com/p/62526102 Zookeeper是什么&#xff1f; ZooKeeper 是一个分布式的&#xff0c;开放源码的分布式应用程序协同服务。ZooKeeper 的设计目标是将那些复…

【Python】从入门到上头— 高级特性(6)

文章目录 一.切片二.迭代三.列表生成式四.生成器五.迭代器 一.切片 取一个list或tuple的部分元素是非常常见的操作。比如&#xff0c;一个list如下&#xff1a; L [Michael, Sarah, Tracy, Bob, Jack]取前3个元素&#xff0c;应该怎么做&#xff1f; 笨办法 [L[0], L[1], L[2…

抽象轻松c语言

目 c语言 c程序 c语言的核心在于语言&#xff0c;语言的作用是进行沟通&#xff0c;人与人之间的信息交换 人与人之间的信息交换是会有信息空白&#xff08;A表达信息&#xff0c;B接受信息&#xff0c;B对信息的处理会与A所以表达的信息具有差距&#xff0c;这段差距称为信…

keras深度学习框架通过简单神经网络实现手写数字识别

背景 keras深度学习框架&#xff0c;并不是一个独立的深度学习框架&#xff0c;它后台依赖tensorflow或者theano。大部分开发者应该使用的是tensorflow。keras可以很方便的像搭积木一样根据模型搭出我们需要的神经网络&#xff0c;然后进行编译&#xff0c;训练&#xff0c;测试…

用迅为i.MX6ULL开发板同一个网段概念

使用 nfs 之前&#xff0c;开发板、虚拟机 ubuntu、windows 电脑三者要互相 ping 通&#xff0c;这就涉及到了同一个网段 的概念。 概念&#xff1a;同一个网段是指 IP 地址和子网掩码相与得到的相同的网络地址。 快速判断同一个网段&#xff1a; &#xff08;1&#xff09…

JVM 是怎么设计来保证new对象的线程安全

1、采用 CAS 分配重试的方式来保证更新操作的原子性 2、每个线程在 Java 堆中预先分配一小块内存&#xff0c;也就是本地线程分配缓冲&#xff08;Thread Local AllocationBuffer&#xff0c;TLAB&#xff09;&#xff0c;要分配内存的线程&#xff0c;先在本地缓冲区中分配&a…