I have a class titled "Account" : 

```
import java.util.Date;

public class Account {

    public int id = 0; //Declare default id as 0
    public double balance = 0; //Declare default balance as 0
    public double annualInterestRate = 0; //Declare default annual interest rate as 0
    public Date dateCreated = new Date(); //Declare date

    //No argument constructor for Account
    public Account() {
    id = 0;
    balance = 0.0;
    annualInterestRate = 0.0;
    }   

    //Constructor that accepts ID, Balance, and Annual Interest Rate
    public Account(int newID, double newBalance, double newAnnualInterestRate) {
    id = newID;
    balance = newBalance;
    annualInterestRate = newAnnualInterestRate;
    }  

    //Get ID
    public int getId() {
        return id;
    }

    //Set ID
    public void setId(int id) {
        this.id = id;
    }

    //Get Balance
    public double getBalance() {
        return balance;
    }

    //Set Balance
    public void setBalance(double balance) {
        this.balance = balance;
    }

    //Get Annual Interest Rate
    public double getAnnualInterestRate() {
        return annualInterestRate;
    }

    //Set Annual Interest Rate
    public void setAnnualInterestRate(double annualInterestRate) {
        this.annualInterestRate = annualInterestRate;
    }

    //Get Date Created
    public Date getDateCreated() {
        return dateCreated;
    }

    //Withdraw method
    double withdraw(double amount) {
    return balance -= amount;
    }

    //Deposit method 
    double deposit(double amount) {
    return balance += amount;
    }

    //Interest rate method
    double getMonthlyInterestRate() {
    return (balance * annualInterestRate) / 12;
   }

} //End Account class 

```

I've then created two different sub-classes "PreferredCustomer" and "CommercialCustomer". These two classes should inherit all methods (deposit, withdraw, monthly interest rate, and all getters and setters) of the main "Account" class. The only difference with the sub-classes, is that they have a pre-determined interest rate.

```
public class PreferredCustomer extends Account {

    public double annualInterestRate;

    public PreferredCustomer() {
    }

    public PreferredCustomer(int id, double balance) {
    super();
    this.annualInterestRate = .04;
    }

} //end PreferredCustomer Class

```

I have a feeling the way I currently have it set up is not accurate. When testing, the withdraw and deposit methods work, but despite entering a starting balance of $20,000, it still sets the starting balance at $0 and does not calculate the interest rate. 

I'm testing the class as such: 

```
public class TestingAccountClass {

public static void main(String[] args) {

    //Create accounts
    CommercialCustomer myCommercialCustomerAccount = new CommercialCustomer(1124, 
          20000.00);

   //Invoking deposit method from account class
   myCommercialCustomerAccount.deposit(3000.00);

   //Display account balance, monthly interest, and date created
   System.out.println("\n\n----Commercial Account---");
   System.out.println("Account Created On: "
       + myCommercialCustomerAccount.getDateCreated());
   System.out.printf("Balance: $%.2f", myCommercialCustomerAccount.getBalance());
   System.out.printf("\nMonthly Interest: $%.2f"
       ,myCommercialCustomerAccount.getMonthlyInterestRate());

```

When testing the class in this way, the deposit method works, but nothing else from the account class (other than withdraw) appears to be working. Any advice would be appreciated. Thank you!