Что не так с моим кодом в отношении создания конструктора?

1

Я пытаюсь создать класс Person с конструктором, который инициирует переменные экземпляра с заданными параметрами, но когда новый объект-объект создается через основной класс, код не может быть выполнен, так как конструкторы Person не требуют аргументов, но Я указал четыре в конструкторе. Я использую NetBeans 7.2.1.. вот мой код:

public class Person {
    private String fName;
    private String mName;
    private String lName;
    private String dob;

    public void Person(String first, String middle, String last, String dateOfBirth){

        fName = first;
        mName = middle;
        lName = last;
        dob = dateOfBirth;
    }

    public String getFirstName(){
        return fName;
    }

    public String getMiddleName(){
        return mName;
    }

    public String getLastName(){
        return lName;
    }

    public String getDOB(){
        return dob;
    }

    public void getFullName(){
        System.out.println(fName + " " + mName + " " + lName);

    }

    public void setFirstName(String name){
        fName = name;
    }

    public void setMiddleName(String name){
        mName = name;
    }

    public void setLastName(String name){
        lName = name;
    }

    public void setDOB(String date){
        dob = date;
    }

    public static void main(String[] args) {
        Person p1 = new Person("John","Thomas","Smith", "10 Jul 14");
        p1.getFullName();
    }
}

Это ошибка, которую я получил при запуске программы:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code -       constructor Person in class Person cannot be applied to given types;
  required: no arguments
  found: java.lang.String,java.lang.String,java.lang.String,java.lang.String
  reason: actual and formal argument lists differ in length
    at Person.main(Person.java:54)
Java Result: 1
Теги:
constructor

3 ответа

10
Лучший ответ

Это не конструктор; из-за void, это метод.

public void Person(String first, String middle, String last, String dateOfBirth){

Явного конструктора не было, поэтому компилятор Java создал конструктор по умолчанию, no-arg. Это объясняет часть сообщения об ошибке:

required: no arguments

Удалите void чтобы превратить ее в конструктор.

public Person(String first, String middle, String last, String dateOfBirth){
  • 0
    Большое вам спасибо, это прояснило это для меня!
1

Измените свой код так:

public class Person {
    private String fName;
    private String mName;
    private String lName;
    private String dob;

    public Person(String first, String middle, String last, String dateOfBirth){

        fName = first;
        mName = middle;
        lName = last;
        dob = dateOfBirth;
    }

    public String getFirstName(){
        return fName;
    }

    public String getMiddleName(){
        return mName;
    }

    public String getLastName(){
        return lName;
    }

    public String getDOB(){
        return dob;
    }

    public void getFullName(){
        System.out.println(fName + " " + mName + " " + lName);

    }

    public void setFirstName(String name){
        fName = name;
    }

    public void setMiddleName(String name){
        mName = name;
    }

    public void setLastName(String name){
        lName = name;
    }

    public void setDOB(String date){
        dob = date;
    }

    public static void main(String[] args) {
        Person p1 = new Person("John","Thomas","Smith", "10 Jul 14");
        p1.getFullName();
    }
}

Объяснение:

Конструкторы не имеют типа возврата. "Тип возврата" для конструктора - это новый экземпляр класса, который не обязательно должен определяться.

Когда вы определяете тип возвращаемого значения в конструкторе, вы превращаете его в метод. Если других конструкторов нет, Java будет использовать конструктор с нулевым аргументом по умолчанию. Вот почему вы получаете ошибку.

1

Удалите пустоту из вашего конструктора.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню