默认构造方法并非总是public的
以前印象中一直有一个概念,说“如果没有提供构造方法,java将自动添加一个空的public的构造方法”。现在看来,有2个问题,一,默认构造方法未必是public的,二,默认构造方法肯定有super();(Object类的是空构造方法)。
实际情况是,默认构造方法的修饰符是和所在类的修饰符一致的。
比如
public class Test{
}
它的默认构造方法是
public Test(){
super();
}
而
class Test{
}
它的默认构造方法是
Test(){
super();
}
这就没有public了。
对于内部类的情况,类的修饰符可能是private,protected。相应的构造方法的修饰符就是private和protected。