java构造器

java类的构造器

在用new创建java类时,会调用与类同名的构造器方法创建类。

多个构造器

在java中,通过重载(overload),一个类可以有多个构造器,各个构造器通过方法的签名(signature) 区分。

*签名:方法名和参数类型。如:

People()
People(int)
People(String)
People(String,int)

无参数的构造器

如果一个类没有提供构造器,java会自动提供一个无参数的构造器,将所有实例字段初始化为默认值。例如:数据型设为0,布尔型设为false,对象变量设为null。
如果提供了构造器,但是没有提供无参数构造器,那么构造对象时就必须提供参数

实例字段的初始化

默认初始化

如果没有显式地初始化实例字段,则实例字段就会被初始化为默认值:数值为0,布尔型为false,对象引用为null。

显式初始化

显式初始化可以通过在构造器中为实例字段赋值,也可以在类定义中为实例字段赋值:

public class People {
    private int age;
    private String name = "Unknow";
    ...
}

这样在执行构造器方法之前,name会被赋值为"Unknown"。

初始化块

java中可以通过初始化块(initialization block) 来对字段进行初始化,这些块在对象被构造时执行,例如:

public class People {
    private int age;
    private String name;

    {
        age = 10;
    }

    {
        name = "Unknown";
    }
    ...
}

调用其他构造器

可以用this() 调用同一个类的其他构造器,例如:

public class People {
    private int age;
    private String name;

    public People() {
        age = 10;
        name = "Unknown";
    }
    public  People(int age) {
        this();
        this.age = age;
    }
}

对象构造顺序

调用构造器时,代码的具体执行顺序为:

  1. 如果构造器第一行调用了另一个构造器,则根据提供的参数调用另一个构造器
  2. 否则
    2.1 所有数据字段初始化为默认值
    2.2 按照在类声明中出现的顺序,执行所有字段初始化方法和初始化块。
  3. 执行构造器主体代码
posted @ 2020-08-05 20:42  nohack7  阅读(176)  评论(0)    收藏  举报