我是在做IO流的笔记时,发现反序列化机制无需通过构造器来初始化Java对象;这时我就想构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象?对于之前的概念也是有些模糊了,顺手记录一下!!!
深入构造器构造器是一个特殊的方法,这个特殊的方法用于创建实例时执行初始化。构造器是创建对象的重要途径,因此Java类必须包含一个或者一个以上的构造器。
使用构造器执行初始化构造器最大的用处就是在创建对象时执行初始化。因为当创建一个对象时,系统为这个对象的实例变量进行默认初始化,这种默认的初始化把所有基本类型的实例变量设为0(对数值型实例变量)或false(对布尔型实例变量),把所有引用类型的实例变量设为null。
如果想改变这种默认的初始化,想让系统创建对象时就为该对象的实例变量显示指定初始值,就可以通过构造器来实现。
那么构造器是不是完全负责创建Java对象?不是!构造器是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不是完全由构造器负责创建的。实际上,当程序员调用构造器时,系统会先为该对象分配内存空间,并为这个对象执行默认初始化,这个对象已经产生了----这些 *** 作在构造器执行之前就都完成了。也就是说,当系统开始执行构造器的执行体之前,系统已经创建了一个对象,只是这个对象还不能被外部程序访问,只能在该构造器中通过this来引用。当构造器的执行体结束后,这个对象作为构造器的返回值被返回,通常还会赋给另一个引用类型的变量,从而让外部程序可以访问该对象。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)