构造函数需要多个子类super [英] Constructor requiring more than one for subclass super
问题描述
请帮助我从此代码中找到错误。我还是新的,我不知道这是否正确。
我有一个错误。
这是错误:
构造函数Person类中的Person不能应用于给定类型;
super();
^
必需:String,String,String
发现:无参数
原因:实际和形式参数列表长度不同
这是我的代码:
import java.util。*;
public class Person {
//数据字段
private String lastName;
private String middleInitial;
private String firstName;
//构造函数
public Person(String lastName,String middleInitial,String firstName){
this.lastName = lastName;
this.middleInitial = middleInitial;
this.lastName = lastName;
}
//访问器方法
public String getlastName(){
return lastName;
}
public String getmiddleInitial(){
return middleInitial;
}
public String getfirstName(){
return firstName;
}
//变换器方法
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类
类地址{
//数据字段
private String streetName;
private int zipCode;
private String state;
private String country;
//构造函数
public Address(String streetName,int zipCode,String state,
String country){
this.streetName = streetName;
this.zipCode = zipCode;
this.state = state;
this.country = country;
}
//访问器方法
public String getstreetName(){
return streetName;
}
public int getzipCode(){
return zipCode;
}
public String getstate(){
return state;
}
public String getcountry(){
return country;
}
//变换器方法
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 +\\\
+ state +,+ country +
\\\
+ zipCode;
return studentAddress;
}
} // end地址类别
class Student extends Person {
private String dateOfBirth;
//构造函数
public Student(String studentName,String dateOfBirth){
super();
dateOfBirth = dateOfBirth;
}
//访问器方法
public String getdateOfBirth(){
return dateOfBirth;
}
//变换器方法
public void setdateOfBirth(){
this.dateOfBirth = dateOfBirth;
}
public String toString(){
return(Date of Birth:+ dateOfBirth);
}
} // end学生子类
编辑:如果我这样做对于Person和Address类。我只能有三个arg的构造函数。如何调用一个一参数构造函数?
例如,我有
public Student(String firstName,String lastName,String middleInitial,String dateOfBirth){
super(firstName,lastName,middleInitial);和
public Student(String streetName,String state,String country){
super(streetName,state,country);
如何单独获取邮政编码?
strong>
public Student(String lastName,String middleInitial,String firstName,String studentName,String dateOfBirth){
super (lastName,middleInitial,firstName);
this.dateOfBirth = dateOfBirth;
}
或
在 Person类中创建没有arg consructor。例如:
public Person(){}
Please help me find errors from this code. I'm still new and I don't know if this is correct or not. I do have one error. This is the error: constructor Person in class Person cannot be applied to given types; super(); ^ required: String,String,String found: no arguments reason: actual and formal argument lists differ in length This is my code:
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
Edited: If I do so for both the Person and Address class. I can only have three-arg constructors. How can I call a one-arg constructor? For example, I have public Student (String firstName, String lastName, String middleInitial, String dateOfBirth) { super(firstName, lastName, middleInitial); and public Student (String streetName, String state, String country) { super(streetName, state, country);
How can I get zipcode separately?
Try this
In student class
public Student ( String lastName, String middleInitial, String firstName,String studentName, String dateOfBirth) {
super( lastName, middleInitial,firstName);
this.dateOfBirth = dateOfBirth;
}
Or
In Person class create no arg consructor. Eg: public Person(){}
这篇关于构造函数需要多个子类super的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!