构造方法
构造方法(也被称为构造器)是类的一个特殊成员方法,在类实例化对象时自动调用。
构造方法是特殊的成员方法,在定义时,有以下几点需要注意:
- 构造方法的名称必须与类名一致。
- 构造方法名称前不能有任何返回值类型的声明。
- 不能在构造方法中使用return返回一个值,但是可以单独写return语句作为方法的结束。
例1:
class Student{
public Student(){
System.out.println("调用了无参构造方法。");
}
}
public class Test{
public static void main(String[] args){
Student stu=new Student();
}
}
上面的代码执行结果:
调用了无参构造方法。
在main方法中创建了一个Student类的对象stu,用new关键字进行实例化时,Student类的构造方法会被自动调用。
构造方法的重载
构造方法也是可以重载的。
例2:
class Student{
private String name;
private int age;
//getter、setter方法略
public Student(){
System.out.println("调用了无参构造方法。");
}
public Student(String name,int age){
this.name=name;
this.age=age;
System.out.println("调用了带两个参数的构造方法。");
}
}
public class Test{
public static void main(String[] args){
Student stu1=new Student();
Student stu2=new Student("陈明明",15);
}
}
上面的代码执行结果:
调用了无参构造方法。
调用了带两个参数的构造方法。
上面的代码中,又定义了一个带两个参数的构造方法,当在main方法中创建对象stu2时就自动调用这个带参构造方法,并为两个属性赋值。构造方法的作用其实就是为了给属性赋初值。
默认构造方法
在Java中的每个类都至少有一个构造方法,如果在一个类中没有定义构造方法,系统会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数,方法体中没有任何代码,即什么也不做。
例3:
class Student{
}
public class Test{
public static void main(String[] args){
Student stu=new Student();
}
}
上面的Student类中虽然没有构造方法,但是下面的main方法中创建对象stu时并不会报错,因为系统会自动为Student类添加一个无参构造方法。
但是如果程序员已经为类添加了构造方法,系统就不会再自动添加这个默认的构造方法了。
例4:
class Student{
private String name;
private int age;
//getter、setter方法略
public Student(String name,int age){
this.name=name;
this.age=age;
System.out.println("调用了带两个参数的构造方法。");
}
}
public class Test{
public static void main(String[] args){
Student stu1=new Student();
Student stu2=new Student("陈明明",15);
}
}
上面这个例子会在创建对象stu1时报错,原因就是Student类中已经有了一个带参数的构造方法,系统就不会再自动为其添加无参构造方法,而下面的main方法中创建对象stu1时又需要调用无参构造方法,这时就会报错。
一般的做法是为类添加构造方法时,至少要定义一个无参构造方法。
注意:
构造方法一般是public级