Java 程序没有看到重载构造函数

Java 程序没有看到重载构造函数,java,constructor,Java,Constructor,我的代码中出现了一个错误(这是我作业的最后一行,我似乎无法解决它),它位于addStudent方法中。它说我试图访问重载构造函数实际上是试图访问默认构造函数,并且没有变量可供我传递。因此,简而言之: “studentArray[i]=新学生(名、姓、性别、sClass、sID);” 正在尝试访问: “public void Student(){}” 但我希望它能够访问: public void Student(字符串firstname、字符串lastname、字符串性别、字符串sClass、字符

我的代码中出现了一个错误(这是我作业的最后一行,我似乎无法解决它),它位于addStudent方法中。它说我试图访问重载构造函数实际上是试图访问默认构造函数,并且没有变量可供我传递。因此,简而言之:

“studentArray[i]=新学生(名、姓、性别、sClass、sID);”

正在尝试访问:

“public void Student(){}”

但我希望它能够访问:

public void Student(字符串firstname、字符串lastname、字符串性别、字符串sClass、字符串sID)

谢谢你的帮助

-安德烈

public void Student() 
{
    setFirstName("Unknown");
    setLastName("Unknown");
    setGender("Unknown");
    setClass("Freshman");
    setID("0000");
}

public void Student(String firstname, String lastname, String gender, String sClass, String sID) 
{
    setFirstName(firstname);
    setLastName(lastname);
    setGender(gender);
    setClass(sClass);
    setID(sID);
}

public static boolean addStudent(String firstname, String lastname, String gender, String sClass, String sID)
{
    for (int i=0; i<studentArray.length; i++) 
    {
        if (studentArray[i] == null)
        {
            studentArray[i] = new Student(firstname, lastname, gender, sClass, sID);
            totStudent++;
        }else {JOptionPane.showMessageDialog(null, "Max students reached.");}
    }
    return true;
}
public void Student()
{
setFirstName(“未知”);
setLastName(“未知”);
设定性别(“未知”);
setClass(“新生”);
setID(“0000”);
}
public void Student(字符串firstname、字符串lastname、字符串性别、字符串sClass、字符串sID)
{
setFirstName(firstname);
setLastName(lastname);
setGender(性别);
setClass(sClass);
setID(sID);
}
公共静态布尔addStudent(字符串名、字符串名、字符串性别、字符串sClass、字符串sID)
{

对于(inti=0;i您正在声明您的“构造函数”使用
void
,实际上使它们成为
void
方法,而不是构造函数。因此,编译器只能使用默认构造函数,这就是您收到该错误的原因。因此:您应该在尝试定义构造函数的任何位置删除
void
关键字。

从构造函数中删除
void
关键字:

public void Student(String firstname, String lastname, String gender, String sClass, String sID) 
改为

public Student(String firstname, String lastname, String gender, String sClass, String sID) 
同样地

public void Student() 
改为

public Student() 

构造函数没有返回类型。

构造函数没有甚至不是void的返回类型。您正在用void声明构造函数,这将使它们成为方法而不是构造函数,因为当您使用构造函数时,它们返回的新对象的类型与其在中定义的类相同新的关键字

Object o=new Object();//您正在调用对象构造函数

--编辑-- 此外,我建议更改此选项

public Student() 
{
    setFirstName("Unknown");
    setLastName("Unknown");
    setGender("Unknown");
    setClass("Freshman");
    setID("0000");
}


从构造函数中删除
void
,无需调用
setter
方法。您可以直接访问以下属性:

 public void Student() 
 {
    this.firstName = "Unknown";
    this.lastName = "Unknown";
    this.gender = "Unknown";
    this.class = "Freshman";
    this.ID="0000";
 }
同样地

 public void Student(String firstname, String lastname, 
                                         String gender, String sClass, String sID) 
 {
    this.firstName = firstname;
    this.lastName = lastname;
    this.gender = gender;
    this.class = sClass;
    this.ID=sID;
 }

你应该已经准备好了。

当我这样做时,方法集\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu实际上是警告,当有什么东西在扩展你的
学生
班级时,它们就起作用了。如果没有任何东西在扩展
学生
,那么你可以a)忽略它们,或者b)使
学生
最终摆脱它们(即
公共最终班级学生{…}
)当我这么做的时候,方法集出现了一个错误,说“构造函数中的可重写方法调用”我该如何摆脱它?1.5年后,我意识到……我是个白痴。:p
class
是一个保留的wprd,仅供参考。
 public void Student(String firstname, String lastname, 
                                         String gender, String sClass, String sID) 
 {
    this.firstName = firstname;
    this.lastName = lastname;
    this.gender = gender;
    this.class = sClass;
    this.ID=sID;
 }