无法在java中创建类的实例

时间:2014-12-08 18:15:13

标签: java arrays class instance

我正在努力使这段代码工作。这是我的代码。头等舱:

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++;
            }
        }
    }
}

尝试在另一个类中创建此类的实例时,它会创建PersonalAccount对象的实例。有没有解决这个问题的方法?我应该注意Java和BlueJ的新手。

编辑:对不起我应该澄清一下。我正试图在另一个类中调用这个类的方法。但在宣布时

PersonalAccount class1 = new PersonalAccount();

我收到错误:类PersonalAccount中的构造函数PersonalAccount无法应用于给定类型。

我试图按下按钮调用该方法(其中numAcc是按钮): numAcc.addActionListener(new ActionListener()             {                 public void actionPerformed(ActionEvent evt)                 {                     个人;                     personal = class1.getNumberOfPersonalAccounts();                 }

        });

3 个答案:

答案 0 :(得分:2)

您没有默认构造函数,因此您无法像这样创建PersonalAccount:

PersonalAccount class1 = new PersonalAccount();

你必须传递参数first,last,accountNumber,cardNumber,cardType。它应该是这样的:

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

阅读本文:http://www.dummies.com/how-to/content/how-to-use-a-constructor-in-java.html

答案 1 :(得分:1)

PersonalAccount没有零参数构造函数,这就是给定语句失败的原因。 这是你遇到的问题吗?

答案 2 :(得分:0)

问题在于构造函数是private

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

两件事: 您需要更改构造函数,使其为public,以便可以访问:

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

接下来要提供firstlastaccountNumber等参数。但是,如果您声明:public PersonalAccount(),那么您就不需要提供实例化类时的参数。

您现在应该可以调用此类的方法了!