Java调用this(...)重载构造器报call to this需为构造器首语句错误咨询
问题原因分析
报错的核心问题是你错误地给构造方法添加了返回值类型void,导致Java编译器没有将这两个Point方法识别为类的构造器,而是判定为普通的实例成员方法:
- Java语法明确规定:类的构造方法没有返回值类型声明,方法名必须和类名完全一致。你给方法前添加了
void之后,两个Point方法就只是普通成员方法,不再具备构造器的属性。 - 只有在构造器内部,才能使用
this(参数列表)的语法调用同类的其他构造器,且该语句必须放在构造器的第一行。你现在是在普通成员方法中写this(z,z),本身就不符合语法规则,因此编译器会抛出call to this must be first statement in constructor的错误。
修复方案
把两个方法前的void关键字删除即可,修复后代码如下:
class Point{ int x ; int y ; Point (int x, int y){ this.x = x ; this.y = y ; } Point(int z){ this(z,z); } }
内容的提问来源于stack exchange,提问作者Julien C.
相关产品推荐
相关产品推荐

