两个对象以某种方式互相更新

我有一个名为 savingAccount 的对象,当我在 main 上创建两个这种类型的对象时,我可以设置用户初始帐户余额。当我创建第一个对象时,初始值设置为 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());


慕标5832272
浏览 65回答 1
1回答

回首忆惘然

问题是您使用的是static变量,而不是非静态(实例)变量。每个静态变量只有一个化身 - 因此在您的情况下,无论SavingsAccount您创建多少个对象,它们都共享相同的savingsBalance数据。因此,当您(认为您是)更改其中之一时SavingAccount,savingsBalance您正在为所有这些更改它
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java