2

我定义了一个银行账户类,并创建了两个不同的账户来扩展银行账户:储蓄账户和支票账户。我在下面发布了他们的构造函数:

public class TimeDepositAccount extends SavingsAccount{
    private int numberOfMonths;
    private static final double WITHDRAW_PENALTY = 20;

    TimeDepositAccount(double interestRate, int numberOfMonths){
        super(interestRate);
        this.numberOfMonths = numberOfMonths;
    }
}

和储蓄账户:

public class SavingsAccount extends BankAccount {
    private static double interestRate;

    public SavingsAccount(double interestRate){
        super();
        this.interestRate = interestRate;
    }


}

在我的测试器中,我创建了一个储蓄账户,然后是一个定时存款账户:

SavingsAccount momsSavings = new SavingsAccount(5);
TimeDepositAccount collegeFund = new TimeDepositAccount(10, 3);

通过调试器后,momsSavings 的利率设置为 5,就像我指定的那样,但是,当我创建 CollegeFund 时,程序将 momsSavings 的利率更改为 10,同时创建了 collegeFund 对象。有人可以告诉我我的错误在哪里吗?

谢谢你。

4

2 回答 2

6

您已将 interestRate 声明为静态的,因此所有实例中只有一个值。

将其更改为非静态:

 private double interestRate;
于 2013-05-15T00:50:21.893 回答
2

静态变量是类成员,对象的所有实例共享相同的信息

于 2013-05-15T01:05:45.687 回答