编译错误:类A中的构造函数A无法应用于给定类型

时间:2019-04-17 13:06:49

标签: java inheritance constructor

我想用构造函数初始化实例变量,但出现编译错误。

class Test{


    public static void main(String[] args){

        A a = new A(5,6);
        System.out.println(a.i);
    }
}

class A{
    int i, k;
    A(int a, int b){
        this.i=a;
        this.k=b;   
    }
}

class B extends A{
    int k;
    B(int a, int b, int c){
        this.k = a;
    }
}

错误是:

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

2 个答案:

答案 0 :(得分:3)

您错过了super中的B通话。您可以使用

对其进行修复
class B extends A{
    int k;
    B(int a, int b, int c){
        super(a,b);
        this.k = a;
    }
}

您还可能打算使用this.k = c

答案 1 :(得分:0)

好吧,你的问题是,如果不先构造对象A,就无法构造对象B。如果在A中具有默认构造函数,则无需在B中调用super(它会自动被调用)。