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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 飘的云 中级黑马   /  2015-5-16 12:22  /  488 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Person p=new Person(),这样的对象初始化过程如下
1 主函数入口进入。
2 静态代码块加载,静态空间开辟。
3堆内存开辟空间,建立对象特有属性。
4属性显示初始化。
5加载构造代码块和构造函数.
6内存地址赋予变量。
在单例设计模式中,是将构造函数私有化以禁止其他程序建立对象。那是不是说是将第五步终止?第五步之前会不会执行,不会又是因为什么?

5 个回复

倒序浏览
他是把构造方法隐藏实现单例的,就是private Person();这样外部就不能调用构造方法了
回复 使用道具 举报
构造方法是在第五步执行的,不调用构造方法,那么前边的几步还执行吗?
回复 使用道具 举报
飘的云 发表于 2015-5-16 12:35
构造方法是在第五步执行的,不调用构造方法,那么前边的几步还执行吗?

外部不能创建对象,但对象自身还可以调用自己的私有构造方法
回复 使用道具 举报
明白了,虽然是将第五步私有化让外部不能创建对象。但是一旦私有化,不是内部创建对象就是外部无法创建对象,要不就是全不执行,要不就是一步都不执行,所以我之前的假设是不成立的。
回复 使用道具 举报
对,就是这样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马