      1  /**

      2     A checking account has a limited number of free deposits and withdrawals.

      3  */

      4  public class CheckingAccount extends BankAccount

      5  {

      6     private int withdrawals;

      7

      8     /**

      9        Constructs a checking account with a zero balance.

     10     */

     11     public CheckingAccount()

     12     {

     13        withdrawals = 0;

     14     }

     15

     16     public void withdraw(double amount)

     17     {

     18        final int FREE_WITHDRAWALS = 3;

     19        final int WITHDRAWAL_FEE = 1;

     20

     21        super.withdraw(amount);

     22        withdrawals++;

     23        if (withdrawals > FREE_WITHDRAWALS)

     24        {

     25           super.withdraw(WITHDRAWAL_FEE);

     26        }

     27     }

     28

     29     public void monthEnd()

     30     {

     31        withdrawals = 0;

     32     }

     33  }

     34