首页 文章

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

提问于
浏览
2

我在我的代码中遇到错误(这是我的任务的最后一行,我似乎无法解决它),这在addStudent方法中 . 它说我尝试访问重载的构造函数实际上是试图访问默认构造函数,并且没有变量供我通过 . 所以,简而言之:

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

正在尝试访问:

“public void Student(){}”

但我希望它访问:

“public void Student(String firstname,String lastname,String gender,String sClass,String sID)”

谢谢您的帮助!

-AndresL

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;
}

5 回答

  • 0

    你用 void 声明你的"constructors",实际上是 void 方法,而不是构造函数 . 因此,编译器只能使用默认构造函数,这就是您收到该错误的原因 . 所以:你应该在尝试定义构造函数的任何地方删除 void 关键字 .

  • 4

    从构造函数中删除 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()
    

    构造函数没有返回类型 .

  • 0

    构造函数没有返回类型,因为当它们与new关键字一起使用时,它们返回与它们定义的类相同类型的新Object .

    Object o = new Object(); //你正在调用Object构造函数 .

    • 编辑 - 我也建议改变它
    public Student() 
    {
        setFirstName("Unknown");
        setLastName("Unknown");
        setGender("Unknown");
        setClass("Freshman");
        setID("0000");
    }
    

    public Student() 
    {
        this("Unknown", "Unknown", "Unknown", "Freshman", "0000"); 
    }
    
  • 1

    构造函数没有返回类型甚至无效 . 你声明你的构造函数是void,这将使它们成为方法而不是构造函数

  • 2

    从构造函数中删除 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;
     }
    

    你应该全力以赴 .

相关问题