构造函数错误"对此的调用必须是构造函数中的第一个语句"

时间:2017-03-19 18:59:40

标签: java

我正在为学校作业写一些代码,我不知道为什么我一直得到编译错误:"调用它必须是构造函数中的第一个语句。"我应该创建一个名为Student的学生而不是输入的名字。

public void newStudent( ){
   this("Student");
   //Error occurs here ^
}

public void newStudent(String student)
{
   studentAndStatus[studentCount] [0] = student;
   for(int i = 0; i < 3; i++)
   {
       grades[studentCount] [i] = 0;
   }
   studentCount++;
}

2 个答案:

答案 0 :(得分:2)

如果要创建类的实例,则应使用构造函数。构造函数与类具有相同的名称,并且没有声明的返回类型,例如

public class Student {
    public Student() {
        this("Student");
    }

    public Student(String name) {
        //Whatever you want to do...
    }
}

在您的情况下会发生错误,因为您只能在构造函数中调用this。由于您的类可能不会被调用newStudent而方法newStudent()具有返回类型,因此方法newStudent()不是构造函数,因此无法调用this

答案 1 :(得分:0)

我假设newStudent()是一个重载的方法,因为构造函数不能有返回类型

this(arguments)只能用于构造函数调用,但是你正在重载newStudent()方法,所以如果你想调用newStudent(String student),你可以这样做,如下所示:

public void newStudent( ){
   newStudent("Student");//calls the overloaded method
}