java中继承的构造函数

时间:2013-01-27 00:21:55

标签: java inheritance

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

何时出现此错误?当继承类时,构造函数必须是同类超类吗?

2 个答案:

答案 0 :(得分:5)

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

如果你真的想让B继承A,你还需要创建一个构造函数,也可以是一个带有两个参数的构造函数,或者只是调用{{1}的构造函数。 1}}使用默认值:

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,则从您的代码中A不需要继承A。在这种情况下,只需删除继承。

答案 1 :(得分:1)

向类B添加构造函数。

编译器意识到您无法实例化类B