2018-04-29
构造函数(构造方法/构造器)
在java类中,如果不显示声明构造函数,JVM 会给该类一个无参的默认(缺省)的构造函数,这个构造函数不执行任何代码(即花括号里无方法体)且你产生类的对象时只能用不带参数的方法。一个类 可以有多个构造函数(重载)。一个类 至少存在一个构造函数
当一个类声明了构造函数以后,JVM 是不会再给该类分配默认的构造函数。因此写了有参数的构造方法就最好加一个无参数的构造方法。
---------------------------------------------------------------------------------------------------------------------------
一、构造函数的作用
- 创建类的对象,必须和new关键字一起使用(创建对象其实是在调用构造函数,构造函数不能直接被调用,必须和new一起使用)。
- 初始化(实例化)对象
二、构造函数的特点
- 构造方法的方法名必须与类名相同。
- 构造方法没有返回类型(因此在方法名前不申明返回类型),也不能定义为void。 void Student(){};这是普通方法。
- 构造方法中不需要使用return返回语句。(其实构造方法是有返回值的,它返回的是当前创建对象的引用)。
- 构造方法可以重载。
三、默认(缺省)构造函数
- 符合构造函数的特点
- 无参数
- 无方法体
- 如果类A没有使用public修饰,则默认构造函数也没有public修饰符
如果类A使用了public修饰,那么默认构造函数也使用public修饰符
(一般来说,默认构造函数与当前类的访问修饰符是一致的)
代码说明:
1 public class Test3 {
2 private int n;
3
4 Test3() {
5 System.out.println("调用默认构造器");
6 }
7
8 Test3(int n) {
9 this.n = n;
10 System.out.println("调用非默认构造器");
11 }
12
13 public static void main(String[] args) {
14 Test3 t1; //声明一个对象 不调用任何构造函数(没有初始化)
15 Test3 t2 = new Test3(); //声明并创建一个对象 使用默认构造函数
16 Test3 t3 = new Test3(3); //声明并创建一个对象 使用非默认构造函数 不使用默认构造函数
17 }
18 }
四、构造函数的重载
构造方法是一种特殊的方法,可以重载。