Banks usually impose a "credit limit". Suppose, there are 1000 dollars on the account. If the client does not have a special agreement with the bank, he cannot take out more money than there is on the account; so he can withdraw() a maximum of 1000 dollars. He might have an agreement with the bank, so he can borrow money from the bank (but has to pay a fee). In that case, he might be able to withdraw 1500 dollars (or 2000 dollars). So the withdraw method has to do a lot of checks as described above.