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

Java子类操作父类私有成员balance报错,符合UML规范如何解决?

错误原因

你写的super.getbalance()*=xxx语句无法编译,是因为getbalance()返回的是临时数值,属于仅能读取的右值,不能作为赋值操作的左操作数,所以会抛出unexpected type错误。

正确实现方案

不需要修改父类balance的private修饰符,只要拆分「读值-计算-写值」三个步骤,通过父类已经提供的public getter、setter方法操作即可,完全符合UML规范和封装要求:

public class child extends base{
    private double interestRate;
    //constructors and getter/setters
    public void interest(){
        double currentBal = super.getbalance();
        double newBal = currentBal * Math.pow((1 + interestRate / 12), 12);
        super.setbalance(newBal);
    }
}

如果追求代码精简也可以合并成一行:

public void interest(){
    super.setbalance(super.getbalance() * Math.pow((1 + interestRate / 12), 12));
}

内容的提问来源于stack exchange,提问作者Mr.Glazes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:45:11