1、构造器的最大的用处就是在创建对象时候执行初始化,我们应该知道,[color=Blue]创建一个对象时候,系统为这个对象的属性进行默认初始化,这种默认初始化把所以基本类型的属性设为0(对熟知型属性)或false(对布尔型属性),把所以的引用类型的属性设置为null[/color]
2、如果我们想改变这种默认初始化,想让[color=Blue]系统创建对象的时候就为该对象的各个属性显示的指定初始值,可以定义有参构造器[/color]
如下程序我们提供一个自定义的构造器:[code=java]package cn.itcast.heima
public class TestConstructor
{
public String name;
public int count;
//提供自定义的构造器,该构造器包含两个参数
public TestConstructor(String name , int count)
{
//构造器里的this代表它进行初始化的对象
//下面两行代码将传入的2个参数赋给this代表对象的name和count属性
this.name = name;
this.count = count;
}
public static void main(String[] args)
{
//使用自定义的构造器来创建TestConstructor对象
//系统将会对该对象执行自定义的初始化
TestConstructor tc = new TestConstructor("黑马程序员训练营学员毕业就业薪水" , 20000);
//输出TestConstructor对象的name和count属性
System.out.println(tc.name);
System.out.println(tc.count);
}
}[/code]运行上面程序,[color=Red]输出对象的时候name属性不是null,而且count属性也不再是0[/color];这就是构造器的作用
注意:[color=Red]构造器是创建Java对象的重要途径,但是构造器不完全负责创建Java对象[/color]
因为如上面程序中通过new TestConstructor("黑马程序员训练营学员毕业就业薪水" , 20000);调用构造器的时候,构造器确实返回了该类的对象,但是[color=Red]这个对象并不是完全由构造器来负责创建的[/color],
实际上,
1、程序员调用构造器的时候,系统会先为该对象分配内存空间,兵卫这个对象执行默认初始化,[color=Red]这个对象已经产生了---这些操作都是在构造器执行之前就完成的[/color],
2、也就是说,当系统开始执行构造器的执行体之前,系统一级创建了一个对象,只是[color=Red]这个对象还不能被外部程序访问,只能在该构造器中通过this来引用他[/color],
3、当执行构造器的执行体结束后,[color=Red]这个对象作为构造器的返回值返回,通常还会赋值给另外一个引用类型的变量,从而让外部程序可以访问这个对象[/color] |