在类中,除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自动调用构造方法。构造方法的特点为:构造方法没有返回值;构造方法的名称要与类名相同。
在定义构造方法时,构造方法没有返回值,但是这与普通的没有返回值的方法并不同,普通的没有返回值的方法使用 public void method() 这种形式定义,但构造方法并不需要使用 void 关键字来进行修饰。构造方法的定义语法格式为:
public book() {
...... //方法体
}
其中,public 为构造方法的修饰符,book 为构造方法的方法名。在构造方法中可以为成员变量赋值,这样当实例化一个本类的对象时,相应的成员变量也将被初始化。如果类中没有明确定义构造方法,编译器会自动创建一个不带参数的默认构造方法。如果在类中定义的构造方法都不是无参的构造方法,那么编译器也不会为类设置一个默认的无参的构造方法,当试图调用无参构造方法实例化一个对象时,编译器会报错。所以只有在类中没有定义任何构造方法时,编译器才会在该类中自动创建一个不带参数的构造方法。
之前我们说过了 this 关键字,它除了可以调用类的成员变量和成员方法之外,还可以调用类中的构造方法。
public class Book {
public book() {
this("this 调用无参构造方法!");
System.out.println("无参构造方法!");
}
public book(String name) {
System.out.println("有参构造方法!");
}
}
在无参构造方法中可以使用 this 关键字调用有参的构造方法,但使用这种方式的时候需要注意只可以在无参构造函数的第一句使用 this 调用有参构造方法。