当您在Java中定义一个类别,但没有定义建构子时,编译器会自动帮您产生一个预设建构子,也就是说,如果您这么写:
public class Test { .... }
则编译器会自动加上预设建构子,也就是相当于这么写:
public class Test { public Test() { } .... }
如果您自行定义建构子,则编译器就不会帮您加上预设建构子,所以当您这么定义时:
public class Test { public Test(int i) { ... } .... }
则在建构时,就必须指明使用哪个建构子,简单的说,您就不能使用以下的方式来建构:
Test test = new Test();
有时会建议即使没有用到,在定义自己的建构子的同时,也加上个没有参数的建构子,例如:
public class Test { public Test() { } public Test(int i) { ... } .... }
另外要注意的是,在继承时,如果您没有使用super()指定要使用父类别的哪个建构子,则预设会寻找无参数的建构子。
预设建构子的存取权限是跟随着类别的存取权限,例如:
public class Test { }
以上的预设建构子存取权限为public。如果是以下的话:
class Test { }
则预设建构子存取权限为default。