Два объекта обновляют друг друга как-то - PullRequest
0 голосов
/ 17 октября 2019

У меня есть объект, который называется SavingAccount, когда я создаю два объекта этого типа на своей главной странице, я могу установить начальный баланс счета пользователя. Когда я создаю свой первый объект, устанавливается начальное значение 3000, когда я создаю свой второй объект с начальным значением 2000, которое устанавливается как для моего первого, так и для второго объекта

Сначала я подумал, что это связано с открытыми методами и классами. , но я установил их все как частные, защищенные и т. д., и проблема все еще сохраняется.

это мой объект:

public class SavingsAccount {
private static double annualInterestRate = 0;
private static double savingsBalance = 0;
private static double monthlyInterest = 0;


SavingsAccount(double savingsBalance){
    this.savingsBalance = savingsBalance;
}

void setAnnualInterestRate(double annualInterestRate){
    this.annualInterestRate = annualInterestRate;

}


private static void updateSavingsBalance(){
    savingsBalance = savingsBalance + monthlyInterest;
}

double getSavingsBalance(){
    return savingsBalance;
}

}

это мой драйвер:

    SavingsAccount saver1 = new SavingsAccount(3000.00);
    System.out.println("User 1 balance: " + saver1.getSavingsBalance()); // 3000

    SavingsAccount saver2 = new SavingsAccount(2000.00);
    System.out.println("User 2 balance: " + saver2.getSavingsBalance()); // 2000

    //2000 for both now
    System.out.println("User 1 balance: " + saver1.getSavingsBalance());
    System.out.println("User 2 balance: " + saver2.getSavingsBalance());

1 Ответ

1 голос
/ 17 октября 2019

Проблема в том, что вы используете static переменные, а не нестатические (экземплярные) переменные.

Существует только одно воплощение каждой статической переменной - так что в вашем случае, неважносколько SavingsAccount объектов вы создаете, все они используют одни и те же данные savingsBalance. Таким образом, когда вы (кажется, что) изменили один из SavingAccount savingsBalance, вы измените его для всех из них

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...