黑马程序员技术交流社区

标题: 对象初始化的疑问 [打印本页]

作者: 飘的云    时间: 2015-5-16 12:22
标题: 对象初始化的疑问
Person p=new Person(),这样的对象初始化过程如下
1 主函数入口进入。
2 静态代码块加载,静态空间开辟。
3堆内存开辟空间,建立对象特有属性。
4属性显示初始化。
5加载构造代码块和构造函数.
6内存地址赋予变量。
在单例设计模式中,是将构造函数私有化以禁止其他程序建立对象。那是不是说是将第五步终止?第五步之前会不会执行,不会又是因为什么?
作者: BOb_小星    时间: 2015-5-16 12:32
他是把构造方法隐藏实现单例的,就是private Person();这样外部就不能调用构造方法了
作者: 飘的云    时间: 2015-5-16 12:35
构造方法是在第五步执行的,不调用构造方法,那么前边的几步还执行吗?
作者: as604049322    时间: 2015-5-16 13:17
飘的云 发表于 2015-5-16 12:35
构造方法是在第五步执行的,不调用构造方法,那么前边的几步还执行吗?

外部不能创建对象,但对象自身还可以调用自己的私有构造方法
作者: 飘的云    时间: 2015-5-16 14:48
明白了,虽然是将第五步私有化让外部不能创建对象。但是一旦私有化,不是内部创建对象就是外部无法创建对象,要不就是全不执行,要不就是一步都不执行,所以我之前的假设是不成立的。
作者: sxsxsx    时间: 2015-5-16 16:33
对,就是这样的





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2