当前位置: 首页 > news >正文

隐藏继承成员什么时候用到

“只有在‘故意不让父类成员参与多态’,但又不想改父类签名时,才用 new 隐藏继承成员。”

一、先分清

表格
复制
关键字目的运行时效果
override 扩展/替换父类实现 动态绑定——真实类型决定方法
new 彻底隐藏父类成员 静态绑定——变量声明类型决定方法

二、典型使用场景

  1. 父类成员不是 virtual/abstract
    你无法 override,却又想在子类里用同名签名提供新实现。
    csharp
    复制
    class Base {public void Foo() => Console.WriteLine("Base.Foo");
    }
    class Derived : Base {public new void Foo() => Console.WriteLine("Derived.Foo");
    }
     
  2. 故意切断多态——“只让编译期看变量类型”
    例如第三方库升级,父类突然加了非虚方法,与你的子类重名;
    new 可避免编译错误,同时保证老代码继续走旧逻辑。
  3. 隐藏字段/属性(同样适用)
    csharp
    复制
    class A { public int X = 1; }
    class B : A { public new int X = 2; }
     

三、代码演示“隐藏 vs 重写”差异

csharp
复制
Base b = new Derived();
b.Foo();     // 输出 Base.Foo  ← 隐藏=静态绑定
 
csharp
复制
Base b2 = new Derived2();   // Derived2 用 override
b2.Foo();    // 输出 Derived2.Foo ← 多态=动态绑定
 

四、使用 checklist

✅ 父类方法没标 virtual → 只能 new
✅ 想故意切断多态,让“变量类型”决定行为 → new
✅ 库升级出现同名冲突,又不敢改库源码 → new
想让子类实例统一多态 → 用 virtual/override,千万别 new

五、面试金句

“当父类成员不是虚方法,我又必须在子类用同名签名提供新实现,或者故意不让它参与多态时,就用 new 隐藏继承成员;
它与 override 的本质区别是——隐藏走编译期类型,重写走运行时类型。”
http://www.gsyq.cn/news/20987.html

相关文章:

  • Oracle OCM 认证的定位与价值
  • Day13-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\exception
  • 2025 值得关注的除锈剂厂家企业推荐榜单,覆盖多场景需求
  • 高效驱动 IC 设计的关键 - RTL 合成
  • springboot实现支付宝支付
  • Pendle Finance 详解:DeFi 中的“收益拆分器”——新手指南
  • Hyperliquid 主链的技术栈详解
  • trading
  • 学生信息管理系统DAO模式改造报告
  • Hive -2025/8/19
  • 2025 防静电/耐高温/耐低温/耐湿耐水/防油/耐酸耐碱/进口原料塑烧板厂家推荐榜单:聚焦高效过滤解决方案
  • 2025 优质的数控/空心管/螺旋/钢带/方向盘/伺服/液压/不锈钢带/桶箍/抱箍/卡箍/弹簧打圈机厂家推荐榜单:聚焦精度与服务的实力之选
  • 2025北京优质拆迁/征地/征拆/动迁/腾退/强拆/房产/烂尾楼/行政诉讼/行政赔偿律师事务所所推荐:聚焦专业实力与服务价值
  • UML复习
  • 跨越三年周期、几十部门、上千零部件:庞大整车研发项目如何被清晰掌控?
  • 【SPIE出版】2025计算机视觉和影像计算国际学术会议
  • 2025 年济南画室最新推荐排行榜权威发布,含小班教学、全封闭管理机构及素描课、寒暑假班、高考集训选择指南
  • 2025 年贴片机优质厂家最新推荐排行榜:涵盖高精度高速固晶点胶等设备,助力企业精准选品高速/固晶/点胶/芯片/光模块贴片机厂家推荐
  • 2025 年真空共晶回流焊炉生产厂家最新推荐排行榜:聚焦国内优质品牌,助力企业精准采购真空共晶炉/真空回流焊炉/真空甲酸炉/半导体焊接炉厂家推荐
  • 密码算法的应用
  • 2025年鸡精生产设备厂家最新推荐排行榜,高效节能,智能控制,品质卓越的鸡精生产线公司推荐!
  • 2025年扑灭司林厂家最新推荐排行榜,高效环保扑灭司林,专业生产与优质服务口碑之选!
  • IvorySQL 亮相第 27 届中国国际软件博览会:开源创新,共筑软件新生态
  • uniapp 内嵌传值和接收
  • 九种常见UML图(分类+图解)
  • 机器视觉双雄YOLO 和 OpenCV 到底有啥区别?别再傻傻分不清!
  • CF946F Fibonacci String Subsequences
  • 国产首发 20 MHz-40 GHz+ 超宽带锥形电感 HLT45T0501G
  • stm32库函数开发配置外部中断
  • 基于Golang+Gin+Gorm+Vue3母婴商城项目实战