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

PHP方法参数类型提示为父类时,子类实例能否传入执行?

问题解答

传入SubPage实例不会抛出异常,代码能正常运行。

原因分析

PHP的类型提示规则里,当方法参数指定为父类类型(这里是Page)时,传入该父类的子类实例(SubPage)是完全合法的——这是面向对象里的里氏替换原则:子类对象可以直接替换父类对象使用,不会破坏程序的正确性。

代码层面的逻辑

你给出的代码里:

  • SubPage通过extends Page明确继承了Page,所以SubPage实例本质上也属于Page类型。
  • ABC类的testMethod要求参数是Page类型,不管传的是Page本身的实例,还是它的子类SubPage的实例,PHP都会判定参数类型符合要求,不会触发类型错误。

额外说明

这种设计是面向对象多态特性的基础,能让你在需要父类对象的场景下灵活使用子类对象,提升代码的扩展性与复用性。

内容的提问来源于stack exchange,提问作者svrl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:25:24