簡體   English   中英

構造函數需要多個子類super

[英]Constructor requiring more than one for subclass super

請幫助我找到此代碼中的錯誤。 我還是新手,我不知道這是否正確。 我確實有一個錯誤。 這是錯誤:構造函數類Person中的Person不能應用於給定的類型; 超(); ^ required: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

編輯:如果我這樣做的人和地址類。 我只能有三個arg構造函數。 如何調用one-arg構造函數? 例如,我有公共學生(String firstName,String lastName,String middleInitial,String dateOfBirth){super(firstName,lastName,middleInitial); 和public Student(String streetName,String state,String country){super(streetName,state,country);

我怎樣才能單獨獲得郵政編碼?

Class Person有一個構造函數,因此不會為您創建默認的無參數構造函數。 因此你不能在Student的構造函數中調用super() ,你必須調用super(lastName, middleInitial, firstName); 或者您可以創建一個新的Person no-arg構造函數。

嘗試這個

在學生班

 public Student ( String lastName, String middleInitial, String firstName,String studentName, String dateOfBirth) {
    super( lastName, middleInitial,firstName);
    this.dateOfBirth = dateOfBirth;
}

要么

Person類中,不創建arg consructor。 例如: public Person(){}

Person Class有一個帶參數的構造函數。 因此不會創建默認構造函數。 因此,您必須在super(3 String參數)中傳遞3個String參數,或者您必須創建一個不在person類中使用任何參數的構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM