C# 继承、重写与覆盖

C# 文件/文件夹操作(文本写入,追加,覆盖,清空,文件/文件夹新建,复制,删除,移动)+驱动器+目录+路径+Path类大全 阅读详情

override(重写)

用关键字virtual修饰的方法,叫虚方法。可以在子类中override声明同名方法,这叫“重写”。override方法提供从基类继承的方法的新实现。

new(覆盖)

在子类中用new关键词修饰定义中与基类同名的代码,叫覆盖。

示例代码
using System;
namespace ConsoleApp1
{
    public class BaseCat
    {
        public virtual string GetName()
        {
            return "BaseName";
        }
        public virtual string GetDescription()
        {
            return "BaseDiscription";
        }
    }

    public class ChildCat : BaseCat
    {
        public override string GetName()    //重写
        {
            return "ChildName";
        }
        public new string GetDescription()  //覆盖
        {
            return "ChildDiscription";
        }
    }
    public class Program
    {
        static void Main(string[] args)
        {
            BaseCat Ali = new BaseCat();
            Console.WriteLine(Ali.GetName());   // “BaseName"
            Console.WriteLine(Ali.GetDescription());    // "BaseDescription"

            BaseCat Betty = new ChildCat();
            Console.WriteLine(Betty.GetName());     // "ChildName"
            Console.WriteLine(Betty.GetDescription());  // "BaseDescription"

            Console.ReadKey();
        }
    }
}
  • 当用子类创建基类的时候,重写会调用子类的功能;而覆盖不会,仍然调用基类功能
  • 虚方法、实方法都可以被覆盖(new), 抽象方法,接口 不可以
  • abstract、virtual、override的方法可以被重写,不能重写非虚方法或静态方法
  • 重写使用频率较高,实现多态
  • 如果基类将成员声明为abstract,则必须在直接继承自该类的任何非抽象类中重写该方法
  • 类可以通过将自己或成员声明为sealed,来防止其他类继承它或继承自其任何成员
C#重写与覆盖 作者:云都小生 何为重写 重写的前提是 1. 必须存在继承关系; 2. 方法名和参数列表必须与父类的方法保持一致 2. 父类用Vritual修饰方法; 3. 子类用Override重写父类的方法 语法是这样的 public class Animal { public virtual void Eat() { Console.Wri... 阅读详情

相关推荐

【C#学习】继承和多态

C# 不支持多重继承,一个类只能有一个直接基类。 本文意在巩固基础知识,并不是对其进行深入剖析,如若对各位高手没有什么作用,请绕过。 本文为原创文,所有示例均是博主测试过的,欢迎大家批评指正,如有转载请标明出处,谢谢。 继承、封装和多态是面向对象编程的重要特性。 其成员被继承的类叫基类也称父类,继承其成员的类叫派生类也称子类。 派生类隐式获得基类的除构造函数和析构函数以外的所有成

csdn_chai的博客 670

c# --- 继承与重写函数

1. 实现继承其实就是类的继承 ---- 父类(基类),子类(派生类)2.子类中重写父类函数的实现代码后,再通过子类调用这个函数的话,就能够执行重写后的代码了3.c#不支持多重类继承,但支持多重接口继承4.在c#中每一个类都必须具有一个父类,且只能有一个父类。当你没有给一个类指定父类的时候,编译器就会给这个类指定一个默认的父类 Object ,如果给一个类指定了一个父类后,Object父类就会被替代,然后新的父类不会出现被替代的情况。......

qq_51947882的博客 2417

57.C#类继承中方法的隐藏与覆盖

在子类中,可以隐藏和覆盖基类的方法。隐藏和覆盖有所不同。隐藏是把基类方法遮蔽,覆盖是在子类中把基类方法替换掉。隐藏用new的方法,覆盖用override的方法。两者的区别是:用new方法只是隐藏了基类方法,基类方法还存在,通过一定方式还可以调用。用override是替换掉了基类方法。下面以例子来说明。python中的重写就很简单了,就是在子类中重写该方法就可以了。 public class C...

acflair的专栏 736

C# 解压zip文件,并覆盖

使用ZipFile.ExtractToDirectory方法,将zip文件解压到一个临时文件夹,然后检查解压后的文件是否在目标文件夹中已存在,如果是,则删除已存在的文件,并将新解压的文件移动到目标文件夹¹。使用ZipFile.ExtractToFile方法,并将overwrite参数设置为true,这样可以覆盖同名的目标文件。

ivanwfy的专栏 3295

C# 中的覆盖和隐藏之间的区别

它们都涉及到在派生类中重新定义基类中已经存在的成员。覆盖会替换基类中的方法实现,而隐藏会提供一个新的实现但不影响基类原有的方法。隐藏是一种在派生类中重新定义基类中的非虚方法的机制。通过隐藏,派生类可以提供自己的实现,但不会覆盖基类中的原始实现。覆盖是一种在派生类中重新定义基类中的虚方法的机制。通过覆盖,派生类可以提供自己的实现,从而覆盖基类中的默认实现。注意到当我们使用基类引用指向派生类对象时,调用的是派生类中的覆盖方法。注意到无论是使用基类引用还是派生类引用,调用的都是基类中的原始方法。

CyberWarpX的博客 341

安卓集成华为HMS Scankit实现自定义扫码功能

实现扫码功能 使用的是集成华为扫描的SDK,UI界面借鉴的是谷歌官方的Zxing项目中的自定义view,两者结合实现。 先上效果图: 先在项目根级别(build.gradle)当中配置HMS Core SDK的Maven仓地址。 // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huaw

qq_47625961的博客 5512

C#学习12------类的继承、重写与多态

一、类的继承 class A { ...... } class B : A { ...... } 如此,则称B是A的子类/派生类,A是B的父类/基类。 所有类的基类都是object类。 派生类的内部原理其实是,先调用基类构造器,再一层一层往下调用,即在内部过程会创造一个基类的实例。因而修改子类对象时,创建的那个基类对象也会相应地被修改。同时,基类对象的东西如果没被修改,就会一直保存原来的值。 base与this相对,引用的是上一层基类的对象,base只能引用一层。 派生类在基类的基础上进行了

m0_62976227的博客 1534

wincc 服务器授权型号,WinCC V7.5 SP1软件安装及授权方法

上篇教程给大家介绍了TIA Portal V16 安装方法,今天分享一下WinCC V7.5 SP1。目前V7.5 SP1是WinCC最新的版本,发布时间2019年11月13日。先放一个官网对WinCC V7.5 的介绍视频,感兴趣的可以先看一下。1、软件下载官网下载链接:https://support.industry.siemens.com/cs/document/109772879五个文件下...

weixin_39956110的博客 1万+

c#重写,覆盖,隐藏,重载,继承

1.重写和覆盖:在c#中这两个是一个意思,重写就是覆盖,覆盖就是重写 2.隐藏:隐藏就是子类与父类的方法一样(子类函数名前加一个new),并且子类不是虚方法,那么子类就会隐藏父类方法 3.重载:方法名相同,参数列表不同 下面看具体事例 1.重写(父类用virtual修饰(虚函数),子类用override修饰) class Animal     {

qq131530624的博客 2678

2022-04-06 RK3566 上调试百兆以太网卡YT8512C 调试记录

一、原理图 二、dts &gmac1_clkin{ clock-frequency = <50000000>; status = "okay"; }; &gmac1 { phy-mode = "rmii"; clock_in_out = "input"; snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>; snps,reset-active-low; sn...

海月汐辰 1万+

SAP面试全过程(已拿offer)

周五打电话给我说过了SAP第一轮面试,第二轮要在下周四北京,这几天终于体会到了什么叫做重压下的感觉,越复习越虚,看别人的面经都感觉卧槽这问题也巨难了吧...连去北京可以见妹子这种事情都感觉一点心情都没有。面前准备固然是要有的,但关键是平时就要有料,多想想自己做的项目。当作一个给自己的提醒吧!

cloudray8580的专栏 4万+

2023/11/2——C#——封装、继承、多态;抽象类;重写和重载和覆盖;this,base

三个特性主要目标:重用性(安全性)、灵活性和扩展性。封装 可以通过 以下 方式实现: * (方法不一定是属性 ; 属性一定是 方法!) 属性(Property):通过Get和Set方法实现对数据的读写操作, 并可以在进行数据读写时添加自定义的逻辑。 在C#中,属性可用于将实例变量封装到类中 访问修饰符:C#中有四种访问修饰符: public、private、protected和inter

m0_62178539的博客 745

深度学习入门:一文详解BP神经网络

在BP神经网络中,输入层和输出层的节点个数都是确定的,而隐含层节点个数不确定,那么应该设置为多少。实际上,隐含层节点个数的多少对神经网络的性能是有影响的,有一个经验公式可以确定隐含层。上面是对隐含层和输出层之间的权值和输出层的阀值计算调整量,而针对输入层和隐含层和隐含层的阀值调。在BP神经网络中,输入层节点没有阀值。神经网络,神经网络在机器学习中应用比较广泛,比如函数逼近,模式识别,分类,数据压缩,数据。要求输入模式要有足够的随机性,对输入模式的噪声比较敏感,即对于剧烈变化的输入模式,训。

Machine Learning with Tutors 4万+

C#中的继承、重写、覆盖、多态、virtual override 以及其他

using System; using System.Collections.Generic; using System.Linq; using System.Text; public class BaseClass { public virtual void displayName() { Console.WriteLine

lihaiyin的专栏 620

[捷稀 JCG Q30 Pro 刷机说明] 以刷入openwrt24.10为例

摘要: 本文详细介绍了捷稀JCG Q30 Pro路由器刷入OpenWrt 24.10系统的步骤。通过先刷入OpenWrt 23.05过渡固件,再升级Uboot,最后通过TFTP加载工厂镜像完成刷机。关键步骤包括解锁分区、刷写Uboot、进入恢复模式及配置网络。文章还提供了无线设置、Tailscale内网穿透等进阶命令,并附参考文档和固件下载链接。适用于有一定技术基础的玩家,需注意操作风险,严格按流程执行。

贤时间 7145

Origin科研绘图——桑基图

是一种用于展示“流动”(flow)关系的可视化图表,常用于呈现能量流、物质流、资金流、信息流等在不同节点之间的传递和分配情况。它最大的特点是用“宽度可变的流线”来直观表示数量大小——流线越宽,代表流量越大,因此特别适合理解复杂系统中资源从哪里来、到哪里去、以及不同路径所占比例。为该流程对应的数量。只需将各个流程逐项填写在 A、B、C 三列即可,流程的排列顺序并非关键,确保起点、终点及对应数值准确才是最重要的。与柱状图、饼图不同,桑基图不仅展示“多少”,还展示“从哪到哪”。至此,本期教程就结束啦。

weixin_41301530的博客 1394

【Unity】Unity C#基础(九)继承、多态、抽象类、接口、抽象方法、虚方法、重写、覆盖

抽象类 抽象属性 接口 委托 抽象方法 虚方法 匿名方法 更多内容请查看总目录【Unity】Unity学习笔记目录整理

一个普普通通的游戏开发者 6737

LPDDR4 JEDEC标准测试实例解析--写操作

LPDDR4的JEDEC标准一致性测试项详解以及实例分享,满满干货!感兴趣的小伙伴可以持续关注!!

一只豌豆象的博客 7775

C#继承中的override(重写)与new(覆盖)用法

  首先声明一个父类Animal类,与继承Animal的两个子类Dog类与Cat类。父类Animal中有一个Say方法,而子类Dog与Cat分别override(重写)与new(覆盖)了Say方法。   让我们通过实例来看一下这两者有什么相同与不同之处。 1 public class Animal 2 { 3 public virtual void Say() 4 { 5 Console.WriteLine("...

Peter的博客 3326

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C#学习(面向对象)Day08——继承、多态(覆盖、重写)

1.继承 理论知识: //继承 //C#语言只支持单继承,不支持多继承---只能继承一个类 //基类---被别人继承,但没有继承别人 //子类在实例化的过程中,除了调用自己的构造函数,还会调用父类的构造函数,如果父类还有父类,也会调用 //构造函数的调用顺序:先父类,再自己。 //如何创建子类的构造函数:子类至少要有一个和父类匹配的上的构造函数(如果如果构造函数有参数,则还需 //要先调⽤⽗类的构造函数并传参数,然后在调⽤⼦类的构造) //调用方式:public ⼦类名(参数列表) : bas

Gyp郭小帅的博客 336

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# 重写(override)和覆盖(new)

重写 用关键字 virtual 修饰的方法,叫虚方法。可以在子类中用override 声明同名的方法,这叫“重写”。相应的没有用virtual修饰的方法,我们叫它实方法。重写会改变父类方法的功能。 覆盖 在子类中用 new 关键字修饰 定义的与父类中同名的方法,叫覆盖。 覆盖不会改变父类方法的功能。 示例代码:(C# 控制台程序) using System; ...

weixin_30540691的博客 338

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# 探险之旅:第三十一节 - 类型class之(虚拟方法与重写virtual与override):一场“继承”的奇幻冒险

通过这场“继承”的奇幻冒险,我们不仅学会了如何使用virtual和override关键字来实现方法的重写与覆盖,还体会到了C#中面向对象编程的灵活与强大。记住,每个巫师(开发者)都有自己的独特之处,勇于在前辈的基础上创新,你就能创造出属于自己的魔法传奇!好了,探险家们,今天的旅程就到这里。下一站,我们将探索更多C#的奥秘,敬请期待!

caifox的博客 498

重写和覆盖区别

今天看到重写和覆盖,有些忘记了,在博客园上看到了介绍,顺便学习了,记录下方便学习,原文地址原文内容为:重写 用关键字 virtual 修饰的方法,叫虚方法。可以在子类中用override 声明同名的方法,这叫“重写”。相应的没有用virtual修饰的方法,我们叫它实方法。重写会...

2548

C#基础巩固——重写(override)修饰与覆盖(new)修饰的区别

写在前面,在C#中派生类实例化时,首先会调用基类的构造方法,然后再调用派生类的构造方法。在C#中可以在派生类中对基类中使用virtual、override、abstract声明的方法进行重写(override)。同样也可以在派生类中使用new 关键字对基类相应的方法进行覆盖。那么这两种方式究竟有多大区别呢?下面开始试验.....   一、范围     // 基类A     public c

CESC的博客 1597
上一篇: C#学习笔记 基础部分
下一篇: C#方法参数
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值