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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Carter 中级黑马   /  2014-11-5 11:01  /  1473 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

视频中说的当类中没有定义构造函数时候,会自动定义默认的空参数构造函数,否则不能对对象进行初始化。问题来了,对象存在于堆内存中,堆内存会自动对其中的实体进行初始化,为什就说不定义构造函数(包括空参数的构造函数)就不能对对象进行初始化了

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

8 个回复

倒序浏览
构造函数分为有参数的和无参数的,定义有参数的构造函数时要定义空参数的构造函数否则发送编译错误,调用构造函数时会调用默认的构造器,没有构造函数就不能调用构造器,所以就不能呗初始化
回复 使用道具 举报
创建一个类会在内存中做出以下事情!
1.先把字节码文件*.class文件加载进内存中。
2.方法和静态属性定义在方法区中。
3.静态代码块初始化(有的话)
4.在堆内存中开辟空间,分配地址值。
5.在堆内存中创建对象,并进行默认初始化。
6.对属性进行显示初始化。
7.构造代码块初始化。
8.构造函数初始化。
9.内存地址值分配给类变量。

LZ提到的堆内存初始化是此过程的步骤5而已,构造函数初始化和此初始化都是建立一个对象不能缺少的步骤。
具体为什么不能缺少,其实我也不大清楚,恳请大神解答!
2L的意思是构造函数会调用构造器,着我不大清楚,我有空查查吧!

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报
14年7月想去it 发表于 2014-11-5 16:49
构造函数分为有参数的和无参数的,定义有参数的构造函数时要定义空参数的构造函数否则发送编译错误,调用构 ...

越看越糊涂了。。。
回复 使用道具 举报
桃华月禅 发表于 2014-11-5 19:28
创建一个类会在内存中做出以下事情!
1.先把字节码文件*.class文件加载进内存中。
2.方法和静态属性定义在 ...

哦,明白了,二楼说的构造器其实就是构造函数,在java中应该叫构造方法,在c++中才叫构造函数
回复 使用道具 举报
在单例模式设计时,毕老师说讲构造函数进行私有化后,就不能建立对象。
你说:不定义构造函数中包括空参数的构造函数吗?包含的话,没有构造函数,应该也不能建立对象,怎么初始化啊。
回复 使用道具 举报
Carter 中级黑马 2014-11-5 23:07:20
7#
wanmei0398 发表于 2014-11-5 19:37
在单例模式设计时,毕老师说讲构造函数进行私有化后,就不能建立对象。
你说:不定义构造函数中包括空参数 ...

我懂了,开始把视频里面的话理解错了,构造函数是伴随new关键字,用来建立对象并对对象进行初始化,并不是单纯的进行初始化,所以,构造函数是必须的
回复 使用道具 举报
其实我一直不知道是称为构造函数还是构造方法,都是看心情,想起哪个叫哪个...你确定Java中叫构造方法?我最近一直叫她构造函数的...
回复 使用道具 举报
二楼所列举的很具体,这是对象初始化的时候虚拟机所操作的。
毕老师视频中有详细的说明(讲静态方法的时候列举的很详细 day06-07对象的初始化过程)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马