为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕标5832272 2023-11-10 15:37:18
我有一个名为 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());
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

问题是您使用的是static变量,而不是非静态(实例)变量。

每个静态变量只有一个化身 - 因此在您的情况下,无论SavingsAccount您创建多少个对象,它们都共享相同的savingsBalance数据。因此,当您(认为您是)更改其中之一时SavingAccountsavingsBalance您正在为所有这些更改它



查看完整回答
反对 回复 2023-11-10
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信