java子类方法引用超类帮助中的字段!

java子类方法引用超类帮助中的字段!,java,Java,我有一个叫做savingsaccount的子类。我希望savingsaccount中的methodaddInterest引用超类中名为balance的字段。它说balance拥有私人访问权限。我该怎么处理这个?我不允许将超类中的字段设置为private以外的任何其他字段。感谢您的帮助。这是savingsaccount中的方法 public void addInterest() { deposit(balance * interestRate / 100); } 可以在超类中添加gett

我有一个叫做savingsaccount的子类。我希望savingsaccount中的methodaddInterest引用超类中名为balance的字段。它说balance拥有私人访问权限。我该怎么处理这个?我不允许将超类中的字段设置为private以外的任何其他字段。感谢您的帮助。这是savingsaccount中的方法

public void addInterest()
{
    deposit(balance * interestRate / 100);
}

可以在超类中添加getter吗?如果它是私有的,则不可访问-周期-因此您必须将其设置为受保护的,或者添加一个get方法:

public class YourSuperClass {
    public YourType getSuperClassField() {
        return superClassField;
    }
}
从技术上讲,你可以使用反射——但这在这里是一个非常糟糕的主意,IMO

protected BalanceType getBalance() { return this.balance; }

在超类中,BalanceType是您未指定的余额类型

创建一个getter方法,如下所示:-

public abstract class MySuperClass {
    private float balance;

    protected float getBalance() {
        return balance;
    }
}

public class SavingsAccount extends MySuperClass {
    public void addInterest() {
        deposit(super.getBalance() * interestRate / 100);
    }

    private void deposit(..) {
        ...
    }
}

如果你有大家都说的源代码,你可以添加一个getter方法,否则你可以使用反射来访问要访问的私有成员。

不要发布新问题,而是编辑可能的重复项,因为你缺少返回类型。:呵呵。谢谢-OP没有指定一个。getSuperClassField需要返回类型。根据“balance”字段在超类中的类型,如果传回对象引用,可能会遇到问题;如果字段是基元类型,则更安全,因为您传回的是一个值而不是ref,否?此外,如果您只想将超类的数据公开给派生类,则受保护的范围可能更好,遵循让API尽可能私有的一般规则?除非子类重写,否则不需要supergetBalance@Jason:你说得对。我用它来向@robert说明child类正在调用超类的API,否则他可能会问为什么SavingsAccount类中没有getBalance?: