java 构造函数Family(String,String,int)未定义

x8diyxa7  于 2023-04-10  发布在  Java
关注(0)|答案(3)|浏览(124)

我是一个Java新手。我得到了一个错误“构造函数家族(字符串,字符串,int)未定义”。我不知道这是什么意思。需要一点帮助。
编辑:我缺少了额外的3个参数,也缺少了31个左右的引号。
Main.java

public class Main {

public static void main(String[] args){
    Family person = new Family("CHRIS", "PEREZ", 31);
    String person1 = person.getPerson();
    System.out.println(person1);    
}

}

Family.java

public class Family {

String firstName;
String lastName;
int age;
int phoneNumber;
String dob;
String married;

public Family(String firstName, String lastName, int age, int phoneNumber,
        String dob, String married) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.phoneNumber = phoneNumber;
    this.dob = dob;
    this.married =  married;

public String getPerson() {
    return ("Hi my name is"+this.firstName+" "+ this.lastName+"."+"I am "+this.age+" years old.");
}

}
atmip9wb

atmip9wb1#

这是因为Family类只有一个六参数构造函数,需要提供所有六个字段。您的调用:

Family person = new Family("CHRIS", "PEREZ", 31);

只提供了所需的六个中的三个。您可以重写构造函数,例如:

public Family(String firstName, String lastName, int age) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    ...
}

但是你应该对你在其他构造函数中提供的,但在这里没有提供的其他字段做些什么。

cgfeq70w

cgfeq70w2#

你可以像这样调用Family类构造函数:

Family person = new Family("CHRIS", "PEREZ", 31);

但是类中唯一的构造函数是这样定义的:

public Family(String firstName, String lastName, int age, int phoneNumber,
    String dob, String married) {

看到它有比你传入的更多的参数:phoneNumber, dob, married。在Java中,你必须给所有参数赋值:

Family person = new Family("CHRIS", "PEREZ", 31, 123456, "5/Apr/1975", "who's asking");

或者,您需要定义一个新的构造函数,它只需要firstName、lastName和age。

6ojccjat

6ojccjat3#

当以错误的顺序调用构造函数参数时,也可能发生这种情况。

相关问题