ITEEDU

Java Gossip: 预设建构子

当您在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。