You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Type Hierarchy下前置/后置条件判定:如何区分子类与父类约束强弱

类型层级下子类前后置条件强弱判定规则

这个判定规则本质是里氏替换原则(LSP)在类继承场景下的强制要求,具体判定逻辑如下:

前置条件(方法执行前调用方必须满足的约束)

  • 更弱约束:子类允许的合法输入范围 大于 父类要求的输入范围。比如父类要求入参必须是大于10的正整数,子类仅要求入参是大于0的正整数,所有能传给父类的合法入参都能直接传给子类,符合替换要求。
  • 更强约束:子类允许的合法输入范围 小于 父类要求的输入范围。比如父类允许入参大于10,子类要求入参大于15,原本能正常传给父类的入参12传到子类就会触发校验失败,破坏类的替换性,属于不合法的继承实现。

后置条件(方法执行完成后必须满足的输出约束)

  • 更强约束:子类输出满足的规则 比父类更严格。比如父类保证返回值是大于0的正整数,子类保证返回值是大于10的正整数,所有子类的返回结果天然满足父类的后置条件,调用方按父类规则处理子类返回值不会出问题。
  • 更弱约束:子类输出满足的规则 比父类更宽松。比如父类要求返回值大于0,子类仅保证返回值大于-5,调用方按父类预期拿大于0的结果时,可能拿到0、-3等不符合预期的值,属于不合法的继承实现。

核心总结:合法的类继承必须满足「子类前置条件不能强于父类,子类后置条件不能弱于父类」的规则。

内容的提问来源于stack exchange,提问作者Nam Trường

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:27:00