当前位置: 首页 > 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.hskmm.com/?act=detail&tid=31013

相关文章:

  • 2025 旋转蒸发仪选型指南:适配科研与生产需求的优质厂家 TOP5 推荐
  • 今天被公司告知不续签合同了,我被优化了 哈哈哈
  • 2025 年混合机厂家最新推荐排行榜:强力混合机 / 倾斜式混合机 / 耐火材料混合机 / 锂电池材料混合机 / 球团强力混合机优质厂家推荐
  • Oracle OCM 认证的定位与价值
  • 2025 优质防爆接线盒/防爆穿线盒/防爆接电箱厂家推荐榜:安全与专业兼具的行业之选
  • 实验2 C语言分支与循环基础应用编程
  • Microsoft Purview实现数据泄露概率降低30%的技术解析
  • Day13-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\exception
  • 2025 值得关注的除锈剂厂家企业推荐榜单,覆盖多场景需求
  • Day3整形输入
  • 2025优质电缆/防火/模压/瓦楞/大跨距/热镀锌/热浸锌/不锈钢/光伏/铝合金/锌铝镁桥架厂家推荐:五家实力企业的技术与服务特色解析
  • 2025 领域优质石油/电厂/钢铁厂/化工/消防/船舶/住宅/管道/隧道/地铁电伴热带厂家推荐榜单,工业与民用场景全覆盖
  • 高效驱动 IC 设计的关键 - RTL 合成
  • m-lag
  • springboot实现支付宝支付
  • Pendle Finance 详解:DeFi 中的“收益拆分器”——新手指南
  • 阅读笔记1
  • 17
  • springboot实现微信支付
  • Hyperliquid 主链的技术栈详解
  • trading
  • pringcloud 中的gateway详解一下,其中的原理
  • Hive -2025/8/19
  • MyBatisPlus
  • 2025年10月学术会议全名单!科研人请抢先收藏,别错过关键节点!
  • 用 Python + Vue3 打造超炫酷音乐播放器:网易云歌单爬取 + Three.js 波形可视化
  • 读书笔记:时间戳(TIMESTAMP)类型:比日期更强大的时间管理工具
  • python对比“解包赋值”和 match 语句中的“解构”
  • 2025 防静电/耐高温/耐低温/耐湿耐水/防油/耐酸耐碱/进口原料塑烧板厂家推荐榜单:聚焦高效过滤解决方案
  • 2025 优质的数控/空心管/螺旋/钢带/方向盘/伺服/液压/不锈钢带/桶箍/抱箍/卡箍/弹簧打圈机厂家推荐榜单:聚焦精度与服务的实力之选