web-dev-qa-db-ja.com

スーパークラスの呼び出しはコンストラクターの最初のステートメントである必要がありますが、

「スーパークラスの呼び出しはコンストラクターの最初のステートメントでなければならない」というエラーが表示され続けます。

問題は、それがisコンストラクターの最初のステートメントであるということです。

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;
}

私はここで何が間違っているのですか?

13
Phil Meyer

このコード

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

コンストラクターではありません。コンストラクターには戻り値の型がありません。 void。クラス名がcustomerであると仮定します:

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

これはCheckingAccountCustomerにも当てはまります。

34
rgettman
public void CheckingAccountCustomer(int a){

voidの戻り値の型があると記載されているため、コンストラクターではありません。これは、クラスと同じ名前のメソッドにすぎません。戻り値の型を取り除きます。

public CheckingAccountCustomer(int a){
public void CheckingAccountCustomer(int a)

戻り値の型があるため、これはコンストラクタではなくメソッドです。

3
Eng.Fouad

constructorそのクラスのインスタンスを作成するために使用されるため、ユーザーが戻り値の型を変更できるかどうかは意味がありません(危険な場合もあります)。そのため、コンストラクターにはno戻り値の型があります。

他の人がすでに答えているように、戻り値の型を削除すると、コンストラクターになります。

2
Maroun

コンストラクターが何か(voidまたはオブジェクトタイプ)を返すことはありません。

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

したがって、コンストラクタではありません。

2
javadev