我正在努力使这段代码工作。这是我的代码。头等舱:
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(); }
});
答案 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)
接下来要提供first
,last
,accountNumber
等参数。但是,如果您声明:public PersonalAccount()
,那么您就不需要提供实例化类时的参数。
您现在应该可以调用此类的方法了!