我正在为学校作业写一些代码,我不知道为什么我一直得到编译错误:"调用它必须是构造函数中的第一个语句。"我应该创建一个名为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++;
}
答案 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
}