C#-new 和 override 的区别

告别SD卡!手把手教你用NVMe硬盘盒给Jetson Orin Nano离线烧录Ubuntu系统 本文详细介绍了如何利用NVMe硬盘盒为Jetson Orin Nano离线烧录Ubuntu系统,替代传统SD卡方案。通过硬件选择、系统镜像准备到烧录命令的全流程解析,帮助开发者提升存储性能与系统稳定性,特别适合嵌入式开发场景。 阅读详情
//override
public class A
{
    
public A()
    
{
        Console.WriteLine(
"A constructing");       
        
this.GetYear();
    }

    
public virtual void GetYear()
    
{
        Console.WriteLine(
"A");
    }

}

public class B:A
{
    
public B():base()
    
{
        Console.WriteLine(
"B constructing");
        
this.GetYear();
    }

    
public override void GetYear()
    
{
        Console.WriteLine(
"B");
    }

}

public class C : B
{
    
public C()
    
{
        Console.WriteLine(
"C constructing");
        
this.GetYear();
    }

    
public override void GetYear()
    
{
        Console.WriteLine(
"C");
    }

}

public class MyClass
{
    
public static void Main()
    
{        
        C c 
= new C();
        Console.ReadLine();
    }
    
}

/***************************************************
output:
    A constructing
    C
    B constructing
    C
    C constructing
    C
**************************************************
*/


//new
public class A
{
    
public A()
    
{
        Console.WriteLine(
"A constructing");
        
this.GetYear();
    }

    
protected  void GetYear()
    
{
        Console.WriteLine(
"A");
    }

}


public class B:A
{
    
public B()
    
{
        Console.WriteLine(
"B constructing");
        
this.GetYear();
    }

    
protected void GetYear() //new写不写一样,但不写编译时会给警告
    {
        Console.WriteLine(
"B");
    }

}

public class C : B
{
    
public C()
    
{
        Console.WriteLine(
"C constructing");
        
this.GetYear();
    }


    
protected new void  GetYear()
    
{
        Console.WriteLine(
"C");
    }

}

public class MyClass
{
    
public static void Main()
    
{        
        C c 
= new C();
        Console.ReadLine();
    }
    
}

/***************************************************
output:
    A constructing
    A
    B constructing
    B
    C constructing
    C
**************************************************
*/

2007-09-08添加
override相当于C++中的重载,需要与virtual关键字配合使用;
new,说实话,不写也无妨,只是编译器会报警告,而它通常出现在子类与父类同名的函数中.

2007-11-3添加
        在第一个例子中,我开始错误的认为,如果此方法被子类重载了,无论是类A的实例还是类B的实例,调用此方法时,一律显示"C",其实不是这样的.应该是哪个类的实例去调用,就显示那个类中该方法的内容.
        而为什么我会错误的分析第一例,还是"this.GetYear();"这句闹的.

public class MyClass
{
    
class Father
    
{
        
public virtual void ShowMe()
        
{
            Console.WriteLine(
"I am father.");
        }

        
public void Talk()
        
{
            Console.WriteLine(
"Father said...");
        }

    }

    
class Child : Father
    
{
        
public override void ShowMe()
        
{
            Console.WriteLine(
"I am child.");
        }

        
public new void Talk()
        
{
            Console.WriteLine(
"Child said...");
        }

    }

    
public static void Main()
    
{        
        Father fa 
= new Father();
        fa.ShowMe();
//output : "I am father"
        fa.Talk();//output : "Father said..."
        Child ch = new Child();
        ch.ShowMe();
//output : "I am child"
        ch.Talk();//output : "Child said..."
        Father fa1 = new Child();
        fa1.Talk();
//output : "Father said..."
        fa1.ShowMe();//output : "I am child"
        RL();
    }
使用 Python 爬虫抓取 IMDb 电影信息 - 评分、评论与基本信息抓取教程 本文介绍了如何使用 Python 爬虫技术抓取 IMDb 电影评分、评论和基本信息。我们分别展示了通过IMDb API和两种方法抓取数据,并进行了数据存储、分析与可视化。在未来,我们还可以基于这些数据开发电影推荐系统、情感分析工具等,进一步丰富电影数据的应用场景。通过这些实践,您不仅学会了如何抓取和存储数据,还可以通过这些基础来构建自己的数据分析应用,获取更丰富的电影数据。 阅读详情

相关推荐

ss524v100 调试cvbs输出

启用视频层3 dev2 对应 layer3在vdec与vo绑定的时候(不需要经过vpss),不能绑定错误,以下是绑定的程序。

2116

C#中的override和new关键字

问题1: 虚方法首先,看下面的代码。namespace CSharpTest { class A { public void fun() { Console.WriteLine("这是父类方法"); } } class B : A { public void fun()

给永远比拿愉快 4563

MLC-LLM框架在安卓设备上的模型编译与部署全流程解析

本文详细解析了如何利用MLC-LLM框架在安卓设备上编译与部署大语言模型。从环境搭建、模型获取与量化编译,到最终的安卓应用打包与调试,提供了完整的实战流程。重点介绍了如何通过MLC-LLM将大型模型优化为适合移动端运行的格式,实现本地、低延迟、隐私安全的AI应用部署。

weixin_29251337的博客 475

C#中new和override的区别

在C#中,override和new都会覆盖父类中的方法。那它们两者之前有什么区别呢?override是指“覆盖”,是指子类覆盖了父类的方法。子类的对象无法再访问父类中的该方法。new是指“隐藏”,是指子类隐藏了父类的方法,当然,通过一定的转换,可以在子类的对象中访问父类的方法。以下代码的运行结果是什么?class Base{ public virtual void F1()

bruesz的专栏 1万+

零代码进行单细胞数据全流程分析教程

我开发的本地电脑无限使用无限分析作图的生信零代码一键分析电脑软件神器OmicsTools 软件在github上的zihaoxingstudy1/OmicsTools仓库 中,大家可以下载安装OmicsTools进行各种生信分析和可视化作图。

qq_40073899的博客 3623

手把手教你用smarteye搭建免费GB28181监控平台(含海康设备接入避坑指南)

本文提供了一份基于SmartEye搭建免费GB28181视频监控平台的实战指南。详细介绍了从服务器部署、GB28181协议核心配置,到海康威视等主流设备接入的完整流程,并重点分享了设备注册失败、无法预览等常见问题的深度排错方法,旨在帮助中小企业及开发者低成本实现多品牌监控设备的统一管理。

pz89012345的博客 326

C# new和override的区别和用途

override 1. override是派生类用来重写基类中方法的; 2. override不能重写非虚方法和静态方法; 3. override只能重写用virtual、abstract、override修饰的方法; 4. 不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。 new 1. new是派生类用来隐藏基类中的方法的;也就是说在派生类中“看不到”基类中的方法,说白了,其实就是基类和派生类的这2个函数,虽然名字相同,但可以看成是名字不

u011555996的博客 3130

锐捷路由器DNS Proxy保姆级配置教程:从零到实战,手把手教你搞定内网域名解析

本文提供锐捷路由器DNS Proxy功能的详细配置教程,从基础环境搭建到实战测试,手把手教你实现内网域名解析。涵盖上游DNS设置、内网域名映射、故障排查等关键步骤,帮助网络管理员快速解决内网访问难题,提升工作效率。

weixin_29284657的博客 554

浅析C# new和override的区别

浅析C# new和override的区别 C#中new和override是继承中经常用到的两个关键字,但是往往有时候容易把这两个关键字的作用搞混淆。 new C# new关键字表示隐藏,是指加上new关键字的属性或函数将对本类和继承类隐藏基类的同名属性或函数 public class A { public virtual void Method() ...

qq_36325332的博客 207

SBP依赖计算中的蝴蝶效应:一个Prefab修改如何触发全量重建?

本文深入探讨了Unity中SBP(Scriptable Build Pipeline)依赖计算的蝴蝶效应,解析了Prefab修改如何触发全量重建的机制。通过分析Asset与Object的层级关系、依赖计算的三种维度及CacheEntry系统,揭示了全量重建的根本原因,并提供了依赖可视化工具开发、优化策略与最佳实践,帮助开发者提升构建效率。

weixin_29015051的博客 444

基于卷积神经网络CNN实现电力负荷多变量时序预测(PyTorch版)

随着智能电网的发展,精准的电力负荷预测对能源调度和电网稳定具有重要意义。本文基于PyTorch框架,提出一种基于卷积神经网络(CNN)的多变量时间序列预测模型,用于电力负荷的短期预测。

时序笔记 988

C# new 和 override 的区别

从上面的代码示例中可以发现,一旦基类的虚方法被override,我们就无法再访问基类的DoSomething()方法,除非是在子类方法中用base.DoSomething()去访问,但对于new修饰的子类同名方法,我们还是可以访问。在C#中子类继承抽象类的时候,new 和override都可以用来修饰子类方法,但两者之间是有区别的。怎么选择new还是override?

浅尝辄止的博客 676

C# MVVM的“核武器”:CommunityToolkit.Mvvm的RelayCommand实战全解

你默默打开VS:“该用RelayCommand的‘量子纠缠’魔法了!用户点击按钮无响应,调试器显示命令未绑定,但代码看起来完美无缺。“我的MVVM应用?那可是能穿越线程的命令量子计算机!异步操作阻塞了UI线程,用户界面变成“加载中”死循环。:UI与业务逻辑通过命令“量子隧道”解耦。:所有长时间操作自动进入“量子跃迁”模式。:携带任意上下文的“量子信封”传递。:命令可用性随数据变化实时同步。

java专栏 663

c#中virtual,new和override的区别

A类 有方法 public virtual void test() B类继承自A类,有方法 public new void test()或者B类继承自A类,有方法 public override说void test()如果你用override,则无论调用的是A类还是B类中的test(),系统都会找到它实质类的test(); 如果是用的New,则可以通过类型转换调

lzx5201314的专栏 817

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# new和override区别

刚开始的学OO(面向对象)的多态,继承,封装时其中的virtual,new,override等一些关键字的时候肯定有好多人不太了解其中的内部结构,以及其中的区别把,这是个抽象的东西,刚接触也很正常,不过等你把这编文章看完之后估计你就会了解的八九不离十啦。废话少说,现在开始。。 OO思想现在已经在软件开发项目中广泛应用,其中最重要的一个特性就是继承,在C#中,new这个关键字使用频率非常高,主要有

smallcuplove的专栏 391

jre9下载 jdk9

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

浅谈C#中new、override、virtual关键字的区别

OO思想现在已经在软件开发项目中广泛应用,其中最重要的一个特性就是继承,最近偶简单的学习了下在设计模式中涉及到继承这个特性时,所需要用到的关键字,其中有一些关键点,特地整理出来。     一、New     在C#中,new这个关键字使用频率非常高,主要有3个功能:         a)   作为运算符用来创建一个对象和调用构造函数。     b)   作为修饰符。     c)   用

令仔很忙 3717

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C# override和new的区别

加不加new其实效果一样。加就是为了语意明确。

weixin_46879188的博客 2894

c#中,new 和 override 的区别

一、在C#中,new这个关键字使用频率非常高,主要有3个功能:     a)     作为运算符用来创建一个对象和调用构造函数。 b)     作为修饰符。 c)      用于在泛型声明中约束可能用作类型参数的参数的类型。     在本文中,只具体介绍new作为修饰符的作用,在用作修饰符时,new关键字可以在派生类中隐藏基类的方法,也就说在使用派生类的方法是调用的方法是New关键字新定义出来的方

XiaPiaoXue的专栏 787

C# 中new,override的区别

最近偶简单的复习了下在C#中涉及到继承这个特性时,所需要用到的关键字,其中有一些关键点,特地整理出来,方便大家查阅。在微软的一次笔试和面试中也提到了这个问题: 一、在C#中,new这个关键字使用频率非常高,主要有3个功能: a)     作为运算符用来创建一个对象和调用构造函数。 b)     作为修饰符。 c)      用于在泛型声明中约束可能用作类型参数的参数

konglingbin66的专栏 762

C# override重写与new隐藏的区别

C# override重写与new隐藏的区别 C#比java多一个new隐藏的功能。C# override重写相当于java中没有关键字的方法重写。所以java中方法是没有隐藏功能的。     C# override重写,是指对父类中的虚方法(标记virtual)或抽象方法(标记为abstract)进行重写,实现新的功能,它必须与父类方法的签名完全一致,而且与父类方法的可访问性也必须一致 ne

珍惜所有的一切 2552

c# new and override区别

<br />C#中new和override是继承中经常用到的两个关键字,但是往往有时候容易把这两个关键字的作用搞混淆。<br />new<br />C# new关键字表示隐藏,是指加上new关键字的属性或函数将对本类和继承类隐藏基类的同名属性或函数 <br />public class A<br />{<br />    public virtual void Method()<br />    {<br />        Console.WriteLine("This Method in Class A

sxy_javaeye的专栏 1211

C#中new和override区别

刚学C#,学到继承的时候,学到了new和override,从网上查了一下相关的文章,看了但还是很模糊,有点没看懂。在这先说一下我自己是怎么理解这两个关键字吧:new关键字跟继承没有关系,可以用在一个类的子类。当子类的一个方法用到new(这个方法可以和基类的一个方法同名,也可以不同),调用的时候会运行基类的同名方法,而不会调用子类有new关键字的方法;override只是在继承的时候才会用到,用在子

春暖花开的日子 1903

C#中virtual,new和override的区别

A类 有方法 public virtual void test() B类继承自A类,有方法 public new void test() 或者B类继承自A类,有方法 public override说void test() 如果你用override,则无论调用的是A类还是B类中的test(),系统都会找到它实质类的test(); 如果是用的New,则可以通过类型转换调用到基类的tes

小猪的专栏 1711

c#中,类的重写中,new和override的区别

c#中new和override的区别

吟游诗人——吟唱生命的不朽 1555

浅谈c#中new和override的用法区别

http://hi.baidu.com/xiaoxiao_luo/item/a2b86f0ca468e796a3df43fb 首先,我引用《c#程序设计实用教程》中的一句话:"关键字new和override的区别:new修饰的方法表示显式隐藏基类继承的同名方法,不能够用基类的引用访问派生类的new方法;override表示重写基类的虚方法,可以用基类的引用指向派生类的重写方法。"    要

jiangxinyu的专栏 2850

C#中重写(override)和覆盖(new)的区别,简单区分

写了很久的c# ,但对一些细枝末节也没有深纠,override和New就是 #region 重写 public class C1 { public virtual string GetName() { return "byronLoong"; } } public class C2 : C1 { public override string GetName() { return "龙龙"; }

Byronloong 的博客 317
上一篇: C#-Dispose 和 Close 的区别
下一篇: C++-ASCII码对照表
MasterFT
博客等级 码龄20年 48粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值