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

时间:2011-02-10 17:42:07

标签: java

我有一个名为savingsaccount的子类。我想在savingsaccount中使用方法(addInterest)来引用名为balance的超类中的一个字段。它说平衡有私人访问权限。我如何摆脱这个?我不允许将超类中的字段设置为除private之外的任何其他字段。非常感谢。这是savingsaccount中的方法。

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

4 个答案:

答案 0 :(得分:3)

创建一个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(..) {
        ...
    }
}

答案 1 :(得分:1)

你可以在超类中添加一个getter吗?如果它是私有的,则无法访问 - 期间 - 所以你必须要么保护它,要么添加一个get方法:

public class YourSuperClass {
    public YourType getSuperClassField() {
        return superClassField;
    }
}

(从技术上讲,你可以使用反射 - 但这在这里真是个坏主意,IMO)

答案 2 :(得分:1)

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

在超类中,其中BalanceTypebalance的类型(您没有指定它)

答案 3 :(得分:1)

如果您拥有所有人所说的源代码,则可以添加getter方法,否则您可以使用反射来访问要访问的私有成员。