Java 为什么创建此对象的实例会改变另一个对象的实例变量?
我定义了一个bankaccount类,并创建了两个扩展bankaccount的不同帐户:储蓄帐户和支票帐户。我在下面发布了他们的构造器:Java 为什么创建此对象的实例会改变另一个对象的实例变量?,java,class,inheritance,Java,Class,Inheritance,我定义了一个bankaccount类,并创建了两个扩展bankaccount的不同帐户:储蓄帐户和支票帐户。我在下面发布了他们的构造器: public class TimeDepositAccount extends SavingsAccount{ private int numberOfMonths; private static final double WITHDRAW_PENALTY = 20; TimeDepositAccount(double interes
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);
在我的测试仪中,我创建了一个储蓄账户,然后创建了一个定期存款账户:
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对象。有人能告诉我我的错误在哪里吗
多谢各位 您已将interestRate声明为静态,因此所有实例中只有一个值 将其更改为非静态:
private double interestRate;
静态变量是类成员,对象的所有实例共享相同的信息。我真傻。谢谢你的帮助,不客气。顺便说一下,欢迎来到StackOverflow。如果你认为这是最好的答案,你可以点击它的旁边的复选标记。您还可以通过单击旁边的上三角形向上投票多个答案。
interestRate
不是实例变量,而是静态变量。这不是一个真正的问题。