how do i code the following in java for this problem?
IAccount interface
AbstractAccount class
SavingsAccount class
CheckingAccount class
SavingsAccount test
Checking Account test
The purpose of this lab is to give you practice with the new concepts from this module, such as polymorphism, sub-typing and protocols (known as interfaces in Java). We will also explore some early-stage code reuse via inheritance (using abstract classes). 1.2 What to do For this lab, you will design and implement the start of a banking solution for a neighborhood bank. There are two types of accounts the bank wants you to implement: one called SavingsAccount and one called CheckingAccount. Your interface and all classes must be in the bank package. Both accounts can do the following: Create a new account by specifying a starter" amount of money to open it with. The starter amount must be greater than or equal to one cent. Do this: Create a constructor that takes a single double representing the "starter amount" for the account. Deposit into their account. Do this: Create a method that takes a single double representing the amount deposited into Do this: Create a method that takes a single double representing the amount deposited into the account. If the amount specified is negative, throw an IllegalArgumentException Withdraw from their account. If the amount specified is greater than the balance available, this operation fails and returns false. Do this: Create a method withdraw that reduces the account balance by the amount specified. Return true if the transaction is successful, false otherwise . Check their balance. Create a method getBalance that returns a double (the current account balance) Non-customer behavior you must implement: Bank administrators can perform monthly maintenance to assess monthly fees and give a "clean slate" for the subsequent month. Do this: Create a performMonthly Maintenance method to charge any fees and then reset transaction counters to zero. Do this: Create a toString method that prints the account balance in dollars/cents format (e.g: $10.00). You may want to look up the documentation for the String.format method (e.g: $10.00). You may want to look up the documentation for the String.format method for this part You are required to create an Account interface that both types of accounts implement, so that the bank can access either account through that common protocol. You will need to consider behavior variations as described below. Behavior variations for a SavingsAccount withdraw method (only 6 withdrawal transactions per month; unlimited deposits per month) Rules: If the amount specified is negative, the operation fails. If the number of withdrawals for the month is greater than 6, a transaction penalty of $14 is deducted from the account when monthly maintenance is performed Behavior variations for a CheckingAccount perform Monthly Maintenance method (minimum balance required: $100 to avoid fees) Rules: if the balance falls below $100 at ANY time during the month (before maintenance is You are required to create an Account interface that both types of accounts implement, so that the bank can access either account through that common protocol. You will need to consider behavior variations as described below. Behavior variations for a SavingsAccount withdraw method (only 6 withdrawal transactions per month; unlimited deposits per month) Rules: If the amount specified is negative, the operation fails. If the number of withdrawals for the month is greater than 6, a transaction penalty of $14 is deducted from the account when monthly maintenance is performed Behavior variations for a CheckingAccount perform Monthly Maintenance method (minimum balance required: $100 to avoid fees) Rules: if the balance falls below $100 at ANY time during the month (before maintenance is performed) an account maintenance fee of $5 is charged when the monthly maintenance is performed