1

クラスA

class A {

    int a;
    int c;

    A (int a, int c) {

       this.a = a;
       this.c = c;

    }
}

クラスB

class B extends A{

    public static void main (String [] args) {

        A obj = new A (5, 6);

    }
}

コードをコンパイルすると、このエラーが表示されます

 B.java:1: error: constructor A in class A cannot be applied to given types;
    class B extends A{
    ^
      required: int,int
      found: no arguments
      reason: actual and formal argument lists differ in length
    1 error

このエラーが正確に表示されるのはいつですか?そして、継承するとき、クラスコンストラクターは同じタイプのスーパークラスでなければなりませんか?

4

2 に答える 2

5

A2 つの引数を取るコンストラクターをB指定し、パラメーターなし (デフォルト) のみを指定します。

B本当にから継承させたい場合はA、コンストラクターも作成する必要があります.1つは2つの引数を持つか、Aデフォルト値で のコンストラクターを呼び出すだけです:

// variant A

class B extends A {
  B (int a, int c) {
    super(a, c);
  }
}

// variant B

class B extends A {
  B () {
    super(0, 0); // replace 0 with an appropiate default value for each parameter
  }
}

ただし、 でインスタンス化するだけの場合は、コードからBを継承する必要はありません。その場合は、継承を削除してください。AAmain

于 2013-01-27T00:25:36.383 に答える
1

class にコンストラクターを追加しBます。

コンパイラは、クラスをインスタンス化できないことを認識していますB!

于 2013-01-27T00:24:50.260 に答える