码迷,mamicode.com
首页 > 编程语言 > 详细

[Java基础] 构造器

时间:2015-01-07 21:00:23      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:java   构造器   

1、构造器是创建对象的根本途径,通过关键字 new 来调用某个类的构造器,即可创建该类的实例对象。构造器是一个特殊的方法,用于创建类的实例,在 Java 语言里,即使使用工厂模式、反射等方式创建对象,其实质依然是依赖于构造器去创建。因此,Java 类必须包含一个或一个以上的构造器。

2、如果类中没有显式定义构造器,系统会提供一个默认的无参构造器,这个构造器的执行体是空的,不做任何事情,它保证了 Java 类至少包含一个构造器。一旦程序显式提供了构造器,系统就不再提供这个默认的构造器了。

3、通常建议为 Java 类保留无参数的默认构造器。举个例子,在继承关系中,子类的创建依赖于父类的无参构造器,所以父类不管需不需要,都得有这个无参构造器。因此,如果为一个类编写了有参数的构造器,通常还要再为该类额外编写一个无参数的构造器。

4、不能在构造器中定义返回值类型,也不能使用 void 定义构造器没有返回值类型。如果定义了返回值类型或是使用了 void ,编译时不会出错,但 Java 会把这个“所谓的构造器”当成普通方法来处理,本质上它已不再是构造器了,而是方法。

5、实际上,类的构造器是有返回值的,它返回的是该类对象实例的引用,因此,构造器的返回值类型总是当前类,这也就说明了,为什么无需为构造器定义返回值类型。但必须注意:不能在构造器里显式使用 return 来返回当前类对象的引用,因为构造器的返回值是隐式的。


6、构造器最大的用处就是在创建对象时执行初始化。当创建一个对象时,系统为这个对象的属性进行默认初始化,如果我们想改变这种默认的初始化状态,想让系统创建对象时就为该对象各属性显式指定初始值,就可以通过构造器来实现。实际上,构造器的初始化工作是建立在系统默认初始化工作之上的,就是说,创建对象的时候,系统执行默认初始化在前,构造器执行初始化在后。

7、前面我们说构造器是创建对象的根本途径,实际上,对象实例并非完全由构造器负责创建!调用构造器时,系统会先为即将要创建的对象分配内存空间,并为这个对象执行默认初始化工作,此时,对象已经产生!这些操作都是在构造器执行之前完成的。也就是说,当系统开始执行构造器的执行体之前,系统已经创建了一个对象并完成默认初始化,只是这个对象此时还不能被外部程序访问,只能在该构造器中通过关键字 this 来引用它。当构造器的执行体结束后,这个对象的引用作为构造器的返回值被返回到程序层面,外部程序才可以通过这个引用访问该对象。

8、构造器主要用于被其他方法调用,产生对象实例。因而它的访问权限通常是 public ,在一些极端的情况下,我们可以限制访问权限,把它的访问权限设置为 protected 、default 、private 。

[Java基础] 构造器

标签:java   构造器   

原文地址:http://blog.csdn.net/u011506951/article/details/42497215

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!