前言:构造器是一个特殊的方法,它主要的作用是在实例化对象的时候,进行对象初始化。构造器是创建对象的重要途径(即使使用工厂模式、反射等方式创建对象,其实质依然是依赖于构造器),因此, Java 类必须包含—个或一个以上的构造器。 篇2:构造器的重载与相互调用
构造器最大的用处就是在创建对象时执行初始化。前言中已经介绍过了,当创建一个对象时,系统为这个对象的实例变量进行默认初始化,这种默认的初始化把所有基本类型的实例变最设为默认值,如下表所示:
数据类型默认初始化byte、short、int、long0float、double0.0char一个空字符(空格),即 ’\u0000’booleanfalse引用数据类型null,表示变量不引用任何对象 通过构造器就可以改变这种默认的初始化,在系统创建对象时就为该对象的实例变量显式指定初始值。
下面类提供了一个自定义的构造器,通过这个构造器就可以让程序员进行自定义的初始化操作。
因为构造器主要用于被其他方法调用(构造器可以调用器,后面会讲的哦~~~_~~~),用以返回该类的实例,因而通常把构造器设置成 public 访问权限,从而允许系统中任何位置的类来创建该类的对象。除非在一些极端的情况下,业务需要限制创建该类的对象,可以把构造器设置成其他访问权限。例如:
设置为 protected:主要用于被其子类调用。设置为 private:可以阻止其他类创建该类的实例(这点其实可以体现 static 关键字的好处,直接类调用方法 ~(~ ̄▽ ̄)~,下次分析!)。 不是!构造器是创建 Java 对象的重要途径,通过 new 关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不是完全由构造器负责创建的。实际上,当程序员调用构造器时,系统会先为该对象分配内存空间,并为这个对象执行默认初始化,这个对象已经产生了( 这些操作在构造器的执行之前就都完成了。也就是说,当系统开始执行构造器的执行体之前,系统已经创建了一个对象,只是这个对象还不能被外部程序访问,只能在该构造器中通过 this 来引用)。