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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© heheka123 中级黑马   /  2014-3-28 17:32  /  1094 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

学到单例设计模式,看到这个代码:
  1.                 class Single{
  2.                         private Single(){
  3.                        
  4.                         }
  5.                         private static Single s = new single();
  6.                        
  7.                         public static Single getInstance(){
  8.                                 return s;

  9.                         }
  10.                 }
复制代码

为什么类的内部会实例化自己呢?是因为构造函数私有了,不能实例化,只能通过静态方法做入口来调用的原因吗?  那如果构造方法不私有,是不是就会出现递归new对象了, 系统会不会崩溃呢?     
这个问题困惑啊, 求解答

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

5 个回复

倒序浏览
构造函数不私有也可以创建对象的。
  1. class Test {
  2.         Test t = new Test();
  3. }
复制代码
回复 使用道具 举报
即使构造函数私有,仍可以出线递归new对象,关键看你怎么操作,就行这样:
回复 使用道具 举报
  1.                 class Single{
  2.                         private Single(){
  3.                         
  4.                         }
  5.                         private static Single s = new single();
  6.                         
  7.                         public static Single getInstance(){
  8. s=new Single();
  9.                                 return getInstance();

  10.                         }
  11.                 }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
出现递归的原因是函数调用函数本身,如果没有结束调用的判断条件的话,就会出现无限递归调用,
回复 使用道具 举报
我知道怎么回事了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马