![](/img/trans.png)
[英]Constructor call must be the first statement in a constructor in super()
[英]Call to super must be first statement in the constructor, but it is
我一直收到一条错误消息,说“对 super 的调用必须是构造函数中的第一条语句”。
问题是它是我的构造函数中的第一条语句。
public void CheckingAccountCustomer(int a){
super(n, p, b);
accountNo = a;
}
这也是我的超类。
public void customer(String n, int p, double b){
name = n;
pin = p;
balance = b;
}
我在这里做错了什么?
这段代码
public void customer(String n, int p, double b){
不是构造函数。 构造函数没有返回类型,例如void
。 假设您的班级名称是customer
:
public customer(String n, int p, double b){
这也适用于CheckingAccountCustomer
。
public void CheckingAccountCustomer(int a){
这不是构造函数,因为它声明它具有void
返回类型。 它只是一个与类同名的方法。 摆脱返回类型。
public CheckingAccountCustomer(int a){
public void CheckingAccountCustomer(int a)
这是一种方法而不是构造函数,因为它具有返回类型。
构造函数用于创建该类的实例 ,因此它是否允许用户更改返回类型是没有意义的(它也可能是危险的)。 这就是构造函数没有返回类型的原因。
正如其他人已经回答的那样,删除返回类型,它将成为构造函数。
构造函数永远不会返回某些内容(void或Object类型)。
public void CheckingAccountCustomer(int a){
super(n, p, b);
accountNo = a;
}
因此不是构造函数。
确保你的“构造函数”真的是一个构造函数。
Java 中有大量的废话样板,我很奇怪为什么构造函数没有“构造函数”关键字。 我的意思是,Java 没有过度冗长的问题,但喜欢在冗长是个好主意的地方保持简洁。
//:错误的://
@Service
public class EmployeeServiceImpl
implements EmployeeServiceInterface
{
private EmployeeRepository employeeRepository ;
/** Constructor **/
public EmployeeServiceImpl saveEmployee(
EmployeeRepository employeeRepository
){
super(); //:No blank line allowed? ://
this.employeeRepository = employeeRepository ;
}
}
//:固定的://
@Service
public class EmployeeServiceImpl
implements EmployeeServiceInterface
{
private EmployeeRepository employeeRepository ;
/** Constructor **/
public EmployeeServiceImpl(
EmployeeRepository employeeRepository
){
super(); //:No blank line allowed? ://
this.employeeRepository = employeeRepository ;
}
}
因为 java 允许重载,所以它没有发现这个错误。 因为就在我的构造函数下面是这样的:
@Override
public EmployeeDAO saveEmployee( EmployeeDAO employee ){
return employeeRepository.save( employee ) ;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.