繁体   English   中英

构造函数错误“对此的调用必须是构造函数中的第一条语句”

[英]Constructor error “call to this must be first statement in constructor”

我正在为学校作业编写一些代码,但不确定为什么会不断出现编译错误:“对此的调用必须是构造函数中的第一条语句。” 我应该创建一个名为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++;
}

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

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

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

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

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

this(arguments)仅可用于构造函数调用,但是您正在重载newStudent()方法,因此,如果要调用newStudent(String student) ,则可以如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM