构造函数需要多个子类super [英] Constructor requiring more than one for subclass super

查看:210
本文介绍了构造函数需要多个子类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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆