调用super必须是构造函数中的第一个语句,但它是

时间:2013-05-06 21:19:12

标签: java constructor super

我一直收到一条错误,说“调用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;
}

我在这里做错了什么?

5 个答案:

答案 0 :(得分:32)

此代码

public void customer(String n, int p, double b){

不是构造函数。构造函数没有返回类型,例如void。假设您的班级名称是customer

public customer(String n, int p, double b){

这也适用于CheckingAccountCustomer

答案 1 :(得分:8)

public void CheckingAccountCustomer(int a){

这不是构造函数,因为它声明它具有void返回类型。它只是一个与类同名的方法。摆脱返回类型。

public CheckingAccountCustomer(int a){

答案 2 :(得分:3)

public void CheckingAccountCustomer(int a)

这是一种方法而不是构造函数,因为它具有返回类型。

答案 3 :(得分:2)

构造函数用于创建该类的实例,因此它是否会让用户更改返回类型是没有意义的(它可能是危险的太)。这就是构造函数具有返回类型的原因。

正如其他人已经回答的那样,删除返回类型,它将成为构造函数。

答案 4 :(得分:2)

构造函数永远不会返回某些内容(void或Object类型)。

public void CheckingAccountCustomer(int a){
    super(n, p, b);
    accountNo = a;
}

因此不是构造函数。