C# override和new关键字的用法 - 方法重写与方法隐藏的差异


override实现多态,调用取决于对象实际类型;new实现方法隐藏,调用取决于引用类型。override要求基类方法为virtual/abstract/override,new可隐藏任意实例方法,且需显式声明以避免警告。

c# override和new关键字的用法 - 方法重写与方法隐藏的差异

在C#中,overridenew 关键字都用于处理基类和派生类中方法同名的情况,但它们的行为有本质区别:一个是方法重写(多态),另一个是方法隐藏。理解这两者的差异对正确使用面向对象特性至关重要。

方法重写(override)——实现多态

当在基类的方法使用 virtual 修饰,在派生类中用 override 重新实现该方法时,就发生了方法重写。这使得调用哪个方法取决于对象的实际类型,而不是引用类型,从而实现运行时多态。

示例:

Krikey AI Krikey AI

Krikey AI 113 查看详情 Krikey AI
class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("Animal speaks");
    }
}

class Dog : Animal
{
    public override void Speak()
    {
        Console.WriteLine("Dog barks");
    }
}

调用代码:

Animal a = new Dog();
a.Speak(); // 输出: "Dog barks"

尽管变量 a 是 Animal 类型,但实际对象是 Dog,因此调用的是 Dog 中重写的 Speak 方法。这就是多态的体现。

方法隐藏(new)——静态绑定

使用 new 关键字可以在派生类中定义一个与基类同名的方法,但不进行重写,而是“隐藏”基类方法。此时调用哪个方法取决于引用的类型,而非对象的实际类型。

示例:

class Animal
{
    public void Speak()
    {
        Console.WriteLine("Animal speaks");
    }
}

class Cat : Animal
{
    public new void Speak()
    {
        Console.WriteLine("Cat meows");
    }
}

调用代码:

Animal a = new Cat();
a.Speak(); // 输出: "Animal speaks"

Cat c = new Cat();
c.Speak(); // 输出: "Cat meows"

虽然 Cat 对象有两个 Speak 方法,但通过 Animal 类型引用调用时,使用的是基类版本。只有通过 Cat 类型引用才能访问隐藏后的新方法。

关键区别总结

  • override 要求基类方法为 virtualabstractoverride;而 new 可用于任何实例方法,无需基类配合。
  • override 改变继承链中所有对该方法的调用行为(多态);new 只在当前类中新增一个同名方法,原方法仍可通过基类引用访问。
  • 未使用 new 隐藏方法时,编译器会发出警告,建议显式使用 new 表明意图。
  • 从设计角度看,override 是扩展或修改行为的标准方式;new 应谨慎使用,通常用于兼容性场景。

如何选择?

如果希望子类改变父类方法的行为,并让所有使用者都看到这个改变,使用 override

如果只是想在子类中提供一个同名但独立的方法,且不希望影响原有调用逻辑,使用 new

基本上就这些。掌握 override 和 new 的差异,能避免运行时行为不符合预期的问题,写出更清晰可靠的继承结构。

以上就是C# override和new关键字的用法 - 方法重写与方法隐藏的差异的详细内容,更多请关注其它相关文章!


# 如何处理  # 庐江应急演练网站建设  # 网站建设空间构成海报  # 服装营销推广阶段是什么  # 青岛seo优化企业  # 展览营销推广案例  # 山东seo优化排名公司  # 罗源专业seo哪家好  # 正定海外网站推广公司有哪些  # 丛台区营销推广招聘网站  # 朝阳网站建设办理流程  # 开源  # c# new  # 如何使用  # 面向对象  # 的是  # 类中  # 子类  # 死锁  # 多态  # 重写  # speak  # c#  # 区别 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: Excel如何制作月度销售统计图_Excel动态图表制作与控件应用  OpenWeatherMap API:通过城市名称获取天气预报数据指南  J*aScript桌面应用_Electron多进程架构实战  PPT智能排版生成入口 免费PPT内容自动生成平台  一点万象签到领积分指南  顺丰快递单号查询寄件人 顺丰寄件人查询入口  魔法祈幻界兑换码礼包大全  圆通快递包裹轨迹查询 圆通速递快件实时位置跟踪  抖音号升级成企业资质怎么弄?有什么好处?  抖音号升级企业号怎么改名字?升级企业号有哪些好处?  Golang如何初始化module项目_Golang module init使用说明  视频转蓝光m2ts格式  Retrofit根路径POST请求:@POST("/") 的应用与解析  《健康大兴》注册方法介绍  PySimpleGUI中实现键盘按键与按钮事件绑定教程  《微信》视频号原创声明开启方法  使用Python和GBGB API高效抓取指定日期范围和赛道比赛结果教程  PointNet++语义分割模型中类别变更引发的断言错误及标签处理策略  苹果如何下载nanobanana  知音漫客官网首页入口_知音漫客热门漫画推荐  5G和6G的连接密度有什么区别 6G每平方公里能连接多少设备  百度竞价WAP显示PC链接问题  CSS布局中意外顶部空白的调试与解决:深入理解padding-top  更换小红书群背景怎么换?小红书群规则怎么设置?  Firefox OS应用开发:解决XMLHttpRequest跨域请求阻塞问题  《全民k歌》音乐怎么下载到本地2025  《火影忍者:木叶高手》快速升级攻略  《环球网校》设置报考省市方法  iSpring三分屏制作教程  Magento 2 产品保存事件中安全更新属性的最佳实践  如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】  百度小说看书时如何翻页_百度小说手动翻页与自动翻页设置  在J*a中如何实现类的继承与方法重用_OOP继承方法重用技巧分享  江苏大剧院会员卡购买步骤  DeepSeek超全面指南:入门必看  英雄联盟争者留名活动介绍  抖音评论无法发送如何修复 抖音评论功能操作指南  HTML Canvas文本样式定制指南:解决外部字体加载与应用难题  mysql如何回滚事务_mysql ROLLBACK事务回滚方法  Linux如何自动分析系统异常日志_Linux日志智能检测  mysql中外键约束如何使用_mysql FOREIGN KEY操作  跨语言测试实践:使用Python Selenium测试现有J*a Web项目  ToDesk远程摄像头功能使用方法_ToDesk远程视频画面查看设置教程  sf漫画官网登录入口直达_sf漫画官方正版网址  《合金装备4》有望推出重制版!制作人发话了  圆通快递官方入口不需要登录 在线查询入口快速查询  电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】  发博客与长微博技巧  抖音网页版官方链接 抖音网页版官网链接入口  修复UI元素交互障碍:从“开始”按钮到信息框的平滑过渡实现 

 2025-12-04

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.