fleggle
fleggle

Reputation: 61

Trouble creating an instance of a class in java

I am struggling with making this code work. Here is my code. First class:

public   class  PersonalAccount extends Account{
    private String cardNumber; 
    private String cardType; 

    public ArrayList<PersonalAccount> personalAccounts;
    public int personal;

   private PersonalAccount(String first, String last, String accountNumber, String cardNumber, String cardType){
        super(first, last, accountNumber);
        this.cardNumber = "";
        this.cardType = "";
    }


    public void addPersonalAccount(PersonalAccount aPersonalAccount){
        personalAccounts.add(aPersonalAccount);
    }

    public void getNumberOfPersonalAccounts(){
       personal = personalAccounts.size();

    }

    public void listAccounts(){
        for (PersonalAccount personalaccount : personalAccounts){
            System.out.println("Personal Accounts");
            System.out.println(personalaccount);
        }
    }

    public void findAccount(){
       int index = 0;
       boolean found = false;
       while(index < personalAccounts.size() && !found){
           PersonalAccount personalaccount = personalAccounts.get(index);
           if (personalaccount.getaccountNumber().equals(accountNumber)){
               found = true;
            }else{
                index++;
            }
        }
    }
}

When attempting to create an instance of this class in another class, it instead creates an instance of the PersonalAccount object. Is there a way around this issue? I am very new to Java and BlueJ it should be noted.

EDIT: sorry I should clarify. I'm trying to call the methods from this class in another class. But when declaring

PersonalAccount class1 = new PersonalAccount();

I get the error: constructor PersonalAccount in class PersonalAccount cannot be applied to given types.

I am trying to call the method on a button click (where numAcc is the button): numAcc.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { int personal; personal = class1.getNumberOfPersonalAccounts(); }

        });

Upvotes: 0

Views: 1158

Answers (3)

cno
cno

Reputation: 184

The problem is here that the constructor is private:

private PersonalAccount(String first, String last, String accountNumber, String cardNumber, String cardType)

Two things: You need to change your constructor such that it is public so that it is accessible:

public PersonalAccount(String first, String last, String accountNumber, String cardNumber, String cardType)

The next thing is to supply parameters such as first, last, accountNumber etc. However, if you declare: public PersonalAccount(), then you would not need to supply arguments when you instantiate the class.

You should now be able to call the methods of this class!

Upvotes: 0

b4da
b4da

Reputation: 3118

You dont have a default constructor so you cannot create a PersonalAccount like this:

PersonalAccount class1 = new PersonalAccount();

You have to pass the parameters first, last, accountNumber, cardNumber, cardType. It should be something like this:

 PersonalAccount class1 = new PersonalAccount("FirstName", "Last_Name", "123456", "123456789", "Visa");

Read this: http://www.dummies.com/how-to/content/how-to-use-a-constructor-in-java.html

Upvotes: 2

Sach
Sach

Reputation: 845

You don't have a zero-argument constructor for PersonalAccount which is why the given statement would fail. Is that the problem you are having?

Upvotes: 1

Related Questions