1  /**
  2     A bank account has a balance that can be changed by 
  3     deposits and withdrawals.
  4  */
  5  public class BankAccount
  6  {  
  7     private double balance;
  8  
  9     /**
 10        Constructs a bank account with a zero balance.
 11     */
 12     public BankAccount()
 13     {   
 14        balance = 0;
 15     }
 16  
 17     /**
 18        Constructs a bank account with a given balance.
 19        @param initialBalance the initial balance
 20     */
 21     public BankAccount(double initialBalance)
 22     {   
 23        balance = initialBalance;
 24     }
 25  
 26     /**
 27        Deposits money into the bank account.
 28        @param amount the amount to deposit
 29     */
 30     public void deposit(double amount)
 31     {  
 32        balance = balance + amount;
 33     }
 34  
 35     /**
 36        Withdraws money from the bank account.
 37        @param amount the amount to withdraw
 38     */
 39     public void withdraw(double amount)
 40     {   
 41        balance = balance - amount;
 42     }
 43  
 44     /**
 45        Gets the current balance of the bank account.
 46        @return the current balance
 47     */
 48     public double getBalance()
 49     {   
 50        return balance;
 51     }
 52  
 53     /**
 54        Transfers money from this account and tries to add it
 55        @param amount the amount of money to transfer
 56        @param otherBalance balance to add the amount to
 57     */
 58     void transfer(double amount, double otherBalance) 
 59     {
 60        balance = balance - amount;
 61        otherBalance = otherBalance + amount;
 62           // Won’t update the argument
 63     }  
 64  
 65     /**
 66        Transfers money from this account to another.
 67        @param amount the amount of money to transfer
 68        @param otherAccount account to add the amount to
 69     */
 70     public void transfer(double amount, BankAccount otherAccount) 
 71     {
 72        balance = balance - amount;
 73        otherAccount.deposit(amount);
 74     } 
 75  
 76     public void transfer2(double amount, BankAccount otherAccount)
 77     {
 78        balance = balance - amount;
 79        double newBalance = otherAccount.balance + amount;
 80        otherAccount = new BankAccount(newBalance); // Won’t work
 81     }
 82  }