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

A指定一个带有两个参数的构造函数,B只指定一个无参数的(默认的)。

如果你真的想让B继承 from A,你还需要创建一个构造函数,或者一个带有两个参数的构造函数,或者一个只调用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

向类添加构造函数B

编译器意识到你不能实例化类B

于 2013-01-27T00:24:50.260 回答