Вызов супер должен быть первым выражением в конструкторе, но это

Я продолжаю получать сообщение об ошибке: "вызов 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;
}

Что я здесь делаю неправильно?

Ответ 1

Этот код

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

не является конструктором. Конструкторы не имеют типов возврата, например. void. Предполагая, что ваше имя класса customer:

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

Это относится и к CheckingAccountCustomer.

Ответ 2

public void CheckingAccountCustomer(int a){

Это не конструктор, так как он указывает, что он имеет возвращаемый тип void. Это просто метод с тем же именем, что и класс. Избавьтесь от типа возврата.

public CheckingAccountCustomer(int a){

Ответ 3

public void CheckingAccountCustomer(int a)

Это метод, а не конструктор, поскольку он имеет тип возврата.

Ответ 4

Конструктор используется для создания экземпляра этого класса, поэтому нет смысла, если он позволит пользователю изменить тип возврата (это тоже может быть опасно). Поэтому конструкторы имеют не тип возврата.

Как уже ответили другие, удалите возвращаемый тип и он станет конструктором.

Ответ 5

Конструкторы никогда не возвращают что-то (либо пустое, либо тип объекта).

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

следовательно, не является конструктором.