Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么创建此对象的实例会改变另一个对象的实例变量?_Java_Class_Inheritance - Fatal编程技术网

Java 为什么创建此对象的实例会改变另一个对象的实例变量?

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

我定义了一个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 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
不是实例变量,而是静态变量。这不是一个真正的问题。