package inheritance;

public class SavingsAccount2 extends AbstractAccount {

  int withdrawals;
  int withdrawalCount;
  double fee;

  public SavingsAccount2(int withdrawals, double fee) {
    this.setWithdrawals(withdrawals);
    this.setFee(fee);
  }

  public void setWithdrawals(int withdrawals) {
    if (withdrawals < 0)
      throw new IllegalArgumentException();
    this.withdrawals = withdrawals;
  }

  public void setFee(double fee) {
    if (fee < 0)
      throw new IllegalArgumentException();
    this.fee = fee;
  }

  @Override
  public void internalWithdraw(double amount) {
    if (withdrawalCount >= withdrawals)
      amount += fee; 

    if (this.balance - amount < 0)
      throw new IllegalStateException("The account does not contain enough money for the withdrawal.");

    withdrawalCount++;
    super.balance -= amount; 
  }
  
}
