我试着运行下面的代码,它给了我一个constructor A in class A cannot be applied to given types
错误。空的构造函数的必要性
class A{
int a;
A(int b){
a = b;
}
}
public static void main (String[] args) throws java.lang.Exception
{
A a = new A();
System.out.println(a.a);
}
如果删除从A
类c'tor然而代码运行正常(和输出0
)。看起来,如果存在另一个c'tor,则没有默认的c'tor(并且只有在写入时才存在更少的c'tor参数)。我对么? 更重要的是,这是为什么?
是的,如果一个构造函数已经存在,编译器将不会创建另一个。为什么?那么,为什么编译器应该假设你总是需要一个公共的no-params构造函数呢? – 2014-09-21 16:01:00
阅读:http://beginnersbook.com/2013/05/constructor-overloading/ – BatScream 2014-09-21 16:04:02