A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Destiny 中级黑马   /  2012-3-14 10:01  /  2453 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  构造器是创建java对象的途径,那么 是不是说构造器完全负责创建java对象?
换句话说,是不是在程序执行构造函数之前,对象并没有被创建,而当执行完构造函数之后,对象就产生了?

6 个回复

倒序浏览
1.如果当用户没有定义构造方法时,编译器会为类自动添加形如类名() { } 的无参构造方法,但是一但自己定义了构造 方法,编译器将不再自动添加. 也就是说构造方法不是必须有的.如果你之前一直未自定义构造方法,当你new一个对象时,系统会自动调用默认的一个无参构造方法,给你对象的实例变量赋初值,比如int型默认为0.但一旦你自己定义了构造方法并new一个对象后,你再new一个对象时系统将不再为你自动提供默认的无参构造方法,那么你必须自己定义一个构造方法,否则编译出错

2 构造器可以不只一个,这叫做方法的重载

3.构造方法不但是要给对象的实例变量赋初值,更重要的是还和new一起来创建对象 ,如果你的对象没有实例变量,当然不用给对象的实例变量赋初值,也就不需要有参的构造器.但这在实际应用中,是毫无意义的.因为没有实例变量的对象什么也干不了.
回复 使用道具 举报
楼上解释的很详细了,我适当补充吧。
首先,对象的创建是隐式或者显示调用构造函数。
其次,当你没有定义构造方法时,编译器会为类自动添加形如类名() { } 的无参构造方法,如果你写一个构造函数,编译器就不会默认的再为你添加五参构造函数了。
回复 使用道具 举报
宋洪祥 发表于 2012-3-14 10:05
1.如果当用户没有定义构造方法时,编译器会为类自动添加形如类名() { } 的无参构造方法,但是一但自己定义了 ...

呵呵 谢谢 。不过 你好像没看懂我的问题,你说的都是构造函数的作用和用法。 我想问的是构造函数创建对象的过程……
回复 使用道具 举报
李爱军 发表于 2012-3-14 10:25
楼上解释的很详细了,我适当补充吧。
首先,对象的创建是隐式或者显示调用构造函数。
其次,当你没有定义构 ...

不好意思哈  我的题目问的是构造器调时 创建对象的具体过程 ……你说的我都知道哦~!
回复 使用道具 举报
应该是在执行构造函数时,对象就已经创建了,因为构造函数主要就是要用来在创建对象时初始化对象的,要是对象都不存在,谈何初始化,如同下面的代码
class Demo{
  String name;
   Demo( String name){
  this.name=name
}
}
class DemoTest
{.......
Demo d=new Demo("zhangsan");
}
当执行到new Demo("zhangsan")时,在堆内存中就开辟了一片空间,对象就创建了,并且对象所属的类的属性name被默认初始化为null,而后再调用构造函数,将name初始化为zhangsan
回复 使用道具 举报
adison 发表于 2012-3-14 10:57
应该是在执行构造函数时,对象就已经创建了,因为构造函数主要就是要用来在创建对象时初始化对象的,要是对 ...

哦~   知道啦 呵呵!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马