【发布时间】:2018-08-01 22:34:00
【问题描述】:
我正在学习 Java 课程的介绍,但我正忙于我的实验室工作。
我们正在设置一个具有继承的类。教授为我们提供了Main、Address、PersonName、PhoneNumber和PersonRecord。
我们的任务是创建一个包含 CustomerID、creditCardType、creditCardNumber 和 creditCardDate 的类 CustomerRecord。我们被指示生成一个类并对“CustomerRecord 而不是 Main”进行任何必要的更改
我继续为班级设置了所有内容,但继续收到相同的错误:
Error:(20, 20) java: constructor CustomerRecord in class edu.cscc.CustomerRecord cannot be applied to given types;
required: java.lang.String,java.lang.String,java.lang.String,java.lang.String
found: edu.cscc.PersonName,edu.cscc.Address,edu.cscc.PhoneNumber,edu.cscc.PhoneNumber,edu.cscc.PhoneNumber,java.lang.String,java.lang.String,java.lang.String,java.lang.String
reason: actual and formal argument lists differ in length
以下是主要内容:
public class Main {
public static void main(String[] args) {
// Initialize test data
Address address = new Address("120 North Tulip Tree Drive",
"Jackson", "OH", "45640");
PersonName name = new PersonName("Dr.", "Adelaide", "Penelope",
"Aardvark", null);
PhoneNumber homephone = new PhoneNumber(740, 555, 1005);
PhoneNumber workphone = new PhoneNumber(740, 555, 2356);
PhoneNumber cellphone = new PhoneNumber(614, 555, 9723);
// TODO - after creating CustomerRecord class, uncomment the following code.
// Create sample customer record
CustomerRecord customer;
customer = new CustomerRecord (name, address, homephone, workphone, cellphone,
"123456","Visa","4111-1111-1111-1111", "12/25");
// Print customer record report
String namerpt = "Name: " + customer.getName().toString();
String addressrpt = "Address: " + address.getStreetAddress() + "\n" +
"\t" + address.getCity() + ", " + address.getState() + " " + address.getZip();
String phonerpt = "Home Phone: " + customer.getHomePhone().toString() + "\n" +
"Work Phone: " + customer.getWorkPhone().toString() + "\n" +
"Mobile Phone: " + customer.getCellPhone().toString();
System.out.println(namerpt+"\n"+addressrpt+"\n"+phonerpt+"\n"+
"Customer ID: "+customer.getCustomerID() + "\n"+
"Credit card type: "+customer.getCreditCardType() + "\n"+
"Credit card number: "+customer.getCreditCardNumber() + "\n"+
"Credit card date: "+customer.getCreditCardDate());
}
}
下面是我创建的 Customer 类:
public class CustomerRecord {
private String customerID;
private String creditCardType;
private String creditCardNumber;
private String creditCardDate;
public CustomerRecord(String customerID, String creditCardType, String creditCardNumber, String creditCardDate) {
this.customerID = customerID;
this.creditCardType = creditCardType;
this.creditCardNumber = creditCardNumber;
this.creditCardDate = creditCardDate;
}
//Accesor//Mutator
public String getCustomerID() {
return customerID;
}
public void setCustomerID(String customerID) {
this.customerID = customerID;
}
public String getCreditCardType() {
return creditCardType;
}
public void setCreditCardType(String creditCardType) {
this.creditCardType = creditCardType;
}
public String getCreditCardNumber() {
return creditCardNumber;
}
public void setCreditCardNumber(String creditCardNumber) {
this.creditCardNumber = creditCardNumber;
}
public String getCreditCardDate() {
return creditCardDate;
}
public void setCreditCardDate(String creditCardDate) {
this.creditCardDate = creditCardDate;
}
}
【问题讨论】:
-
错误信息是不言自明的。您正在传递需要字符串的自定义类。
-
你的
CustomerRecord构造函数只接受 4 个字符串参数,但你用 9 个参数调用它。 -
是的,schmosel 说的很对,你传递的是你自己的类对象,而不是
Strings。要么构造函数需要编辑,要么构造函数的调用需要编辑。
标签: java class inheritance