为什么以下代码会产生编译错误(构造函数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();
}
}
答案 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);