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

JUnit5测试中重写SimpleDate的isLeap方法报@Override编译错误

编译错误原因分析

核心原因是父类SimpleDate中的isLeap(int)方法为private私有访问权限,私有方法不支持重写,你在匿名子类中定义的同名同参数方法不属于方法重写范畴,因此@Override注解触发编译校验失败。

相关Java语法规则说明

  • Java的方法重写仅对public、protected、同包下的默认(包访问)权限方法生效,私有方法对子类完全不可见,子类无法继承、也无法重写私有方法。
  • 你在匿名类中定义的public boolean isLeap(int year)本质是和父类私有方法完全无关的新方法,不属于重写逻辑,不满足@Override注解的校验规则,因此编译器抛出对应错误。
  • 即使你删除@Override注解绕过编译报错,实际执行simpleDate.rangesOK()方法时,调用的还是父类的私有isLeap方法,不会执行你在匿名类中定义的Mock逻辑,测试不会按预期生效。

解决方案

修改父类SimpleDate的isLeap方法的访问权限,改为protected或者public即可,修改后重写逻辑就会生效,@Override注解不会再报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:36:02