5.5 深入构造器 5.5.1 使用构造器执行初始化
5.5 深入构造器
构造器用于创建实例时执行初始化。Java
类必须包含个或一个以上的构造器。
什么时候系统提供默认无参构造器
如果程序员没有为Java
类提供任何构造器,则系统会为这个类提供一个无参数的构造器,这个构造器的执行体为空,不做任何事情。无论如何,Java
类至少包含一个构造器。
5.5.1 使用构造器执行初始化
构造器最大的用处就是在创建对象时执行初始化
。
默认的初始化规则
当创建一个对象时,系统为这个对象的实例变量
进行默认初始化,这种默认的初始化
- 基本类型的
数值型
实例变量设为0
- 基本类型的
布尔型
实例变量设为false
- 把所有
引用类型
的实例变量设为null
执行构造器执行体之前对象已经创建好了
当系统开始执行构造器的执行体之前,系统已经创建了一个对象,只是这个对象还不能被外部程序访问,只能在构造器中通过this
来引用。当构造器的执行体执行结束后,这个对象作为构造器的返回值被返回,这个返回值通常会赋给另一个引用类型的变量,从而让外部程序可以访问该对象。
若自定义构造器则系统不再提供默认无参构造器
一旦程序员提供了自定义的构造器,系统就不再提供默认的无参构造器。此时,如果用户想要使用无参数的构造器,则要自己写一个无参的构造器。
构造器重载
如果一个类里提供了多个构造器,就形成了构造器的重载
构造器的访问修饰符
- 因为构造器主要用于被其他方法调用,用以返回该类的实例,所以通常把构造器设置成
public
访问权限,从而允许系统中任何位置的类来创建该类的对象。 - 构造器设置为
protected
,主要用于被其子类
调用; - 构造器设置为
private
,阻止其他类调用构造器来创建该类的实例。