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

子类重写父类getArea方法后,如何调用父类原方法?已解决

关于子类重写方法后调用父类原方法的问题解答

嘿,先给你吃个定心丸——你代码里的super.getArea()其实是完全正确的,确实会调用父类Circle里的getArea方法来计算体积,你后来发现功能正常也验证了这一点~

核心问题解答:重写后能不能调用未被重写的父类方法?

当然可以!在Java中,当子类重写了父类的方法后,只要通过super.方法名()的语法调用,就会明确指向父类中未被重写的原始方法实现,完全不会被子类的重写版本干扰。

你的代码逻辑分析

咱们拆解下你的代码:

  • Circle类的getArea():计算的是圆的底面积(公式:π * radius²)
  • Cylinder类的getVolume():通过super.getArea()拿到父类的底面积,再乘以height,这正是圆柱体积的正确计算逻辑
  • Cylinder重写的getArea():实现的是圆柱的侧面积(公式:2 * π * radius * height),和父类的方法职责不同,两者完全独立

你之前误以为“无论是否使用super.都调用重写后的方法”,大概率是刚起床没睡醒的小乌龙啦,实际你的代码逻辑没有问题,super.getArea()确实精准调用了父类的方法。

小优化建议(非必需)

你的代码里的三元表达式可以简化得更易读,比如:

// 替换原来的radius赋值逻辑
this.radius = Math.max(radius, 0);
// height同理
this.height = Math.max(height, 0);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:11:50