我有一个名为savingsaccount的子类。我想在savingsaccount中使用方法(addInterest)来引用名为balance的超类中的一个字段。它说平衡有私人访问权限。我如何摆脱这个?我不允许将超类中的字段设置为除private之外的任何其他字段。非常感谢。这是savingsaccount中的方法。
public void addInterest()
{
deposit(balance * interestRate / 100);
}
答案 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; }
在超类中,其中BalanceType
是balance
的类型(您没有指定它)
答案 3 :(得分:1)
如果您拥有所有人所说的源代码,则可以添加getter方法,否则您可以使用反射来访问要访问的私有成员。