请帮我查找此代码中的错误。我还是新人,我不知道这是否正确。 我确实有一个错误。 这是错误: 构造函数类Person中的Person不能应用于给定的类型; 超(); ^ required:String,String,String 发现:没有争论 原因:实际和正式的参数列表长度不同 这是我的代码:
import java.util.*;
public class Person {
//Data fields
private String lastName;
private String middleInitial;
private String firstName;
//Constructors
public Person(String lastName, String middleInitial, String firstName) {
this.lastName = lastName;
this.middleInitial = middleInitial;
this.lastName = lastName;
}
//Accessor methods
public String getlastName() {
return lastName;
}
public String getmiddleInitial() {
return middleInitial;
}
public String getfirstName() {
return firstName;
}
//Mutator methods
public void setlastName(String lastName) {
lastName = lastName;
}
public void setmiddleInitial(String middleInitial) {
middleInitial = middleInitial;
}
public void setfirstName(String firstName) {
firstName = firstName;
}
public String getName() {
String studentName = this.lastName + ", " + this.firstName +
this.middleInitial + ".";
return studentName;
}
} //end Person class
class Address {
//Data fields
private String streetName;
private int zipCode;
private String state;
private String country;
//Constructors
public Address(String streetName, int zipCode, String state,
String country) {
this.streetName = streetName;
this.zipCode = zipCode;
this.state = state;
this.country = country;
}
//Accessor methods
public String getstreetName() {
return streetName;
}
public int getzipCode() {
return zipCode;
}
public String getstate() {
return state;
}
public String getcountry() {
return country;
}
//Mutator methods
public void setstreetName(String streetName) {
streetName = streetName;
}
public void setzipCode(int zipCode) {
zipCode = zipCode;
//Integer.toString(zipCode);
}
public void setstate(String state) {
state = state;
}
public void setcountry(String country) {
country = country;
}
public String getAddress() {
String studentAddress = streetName + "\n" + state + ", " + country +
"\n" + zipCode;
return studentAddress;
}
} //end Address class
class Student extends Person {
private String dateOfBirth;
//Constructors
public Student (String studentName, String dateOfBirth) {
super();
dateOfBirth = dateOfBirth;
}
//Accessor methods
public String getdateOfBirth() {
return dateOfBirth;
}
//Mutator methods
public void setdateOfBirth() {
this.dateOfBirth = dateOfBirth;
}
public String toString() {
return ("Date of Birth: " + dateOfBirth);
}
} //end Student subclass
编辑:如果我同时为Person和Address类这样做。我只能有三个arg构造函数。如何调用one-arg构造函数? 例如,我有 public Student(String firstName,String lastName,String middleInitial,String dateOfBirth){ super(firstName,lastName,middleInitial);和 public Student(String streetName,String state,String country){ 超级(街道名称,州,国家);
如何单独获取邮政编码?
答案 0 :(得分:1)
类Person
有一个构造函数,因此不会为您创建默认的无参数构造函数。因此,您无法在super()
的构造函数中调用Student
,您必须致电super(lastName, middleInitial, firstName);
。
或者您可以创建一个新的Person
无参数构造函数。
答案 1 :(得分:1)
试试这个
在学生班上
public Student ( String lastName, String middleInitial, String firstName,String studentName, String dateOfBirth) {
super( lastName, middleInitial,firstName);
this.dateOfBirth = dateOfBirth;
}
或强>
在 Person class 中,不创建arg consructor。例如: 公共人员(){}
答案 2 :(得分:0)
Person Class有一个带参数的构造函数。因此不会创建默认构造函数。所以你必须在super(3个String参数)中传递3个String参数,或者你必须创建一个不在person类中使用任何参数的构造函数。