繁体   English   中英

对 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.

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