为什么要创建此对象的实例来更改另一个对象的实例变量?

时间:2013-05-15 00:48:32

标签: java class inheritance

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

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,然后是timedeposit帐户:

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

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

谢谢。

2 个答案:

答案 0 :(得分:6)

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

将其更改为非静态:

 private double interestRate;

答案 1 :(得分:2)

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