为什么我得到一个'构造函数是undefined`错误?

时间:2015-07-12 12:37:51

标签: java

为什么以下代码会产生编译错误(构造函数AA()未定义)?它不应该调用默认构造函数吗?

public class A{
    public A(){ }
}

public class AA extends A{
    public AA(int aa){ }
}

public class C{
    public static void main(String[] args){
        A a= new AA();
    }
}

2 个答案:

答案 0 :(得分:2)

如果class中没有class的构造函数,则编译器只会向AA添加默认构造函数。

8.8.9 Default Constructors (Java language specification)

  

如果类不包含构造函数声明,则隐式声明默认构造函数

答案 1 :(得分:0)

你写

A a= new AA(); // try to invoke default constructor

但是类AA中没有default构造函数,因为你编写了自己的构造函数

public AA(int aa){ }

所以试试这个:

int someInteger = 1;
A a= new AA(someInteger);