构造方法是一种特殊的方法,没有构造方法就不能创建一个新对象。实际上,不仅要调用对象实际类型的构造方法,还要调用其父类的构造方法,向上追溯,直到Object类。构造方法不必显式地调用,当使用new关键字时,相应的构造方法会自动被调用。
1、构造方法的规则。
A、构造方法能使用任何访问修饰符。包括private,事实上java类库有很多都是这样的,设计者不希望使用者创建该类的对象。
B、构造方法的名称必须与类名相同。这样使得构造方法与众不同,如果我们遵守sun的编码规范,似乎只有构造方法的首字母是大写的。
C、构造方法不能有返回类型。
反过来说,有返回类型的不是构造方法
public class Test {
int Test(){
return 1;
}
}
这个方法是什么东西?一个冒充李逵的李鬼而已,int Test()和其他任何普通方法没什么两样,就是普通的方法!只不过看起来很恶心,类似恶心的东西在考试卷子里比较多。
D、如果不在类中创建自己的构造方法,编译器会自动生成默认的不带参数的构造函数。
这点很容易验证!写一个这样简单的类,编译。
class Test {
}
对生成的Test.class文件反编译:javap Test,可以看到:
D:"JavaCode"bin>javap Test
Compiled from "Test.java"
class Test extends java.lang.Object{
Test();
}
看到编译器自动添加的默认构造函数了吧!
E、如果只创建了带参数的构造方法,那么编译器不会自动添加无参的构造方法的!
F、在每个构造方法中,如果使用了重载构造函数this()方法,或者父类的构造方法super()方法,那么this()方法或者super()方法必须放在第一行。而且这两个方法只能选择一个,因此它们之间没有顺序问题。
G、除了编译器生成的构造方法,而且没有显式地调用super()方法,那么编译器会插入一个super()无参调用。 |