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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

morlay2011

注册黑马

  • 黑马币:

  • 帖子:

  • 精华:

© morlay2011 注册黑马   /  2011-8-27 09:12  /  2716 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在毕老师06-09课程中讲到单例设计模式.代码如下:
class A
{
   private A(){}
   private static A aa = new A();
   public static A getInstance()
   {
     return aa;
   }
}
class B
{
  public static void main(String[] args)
  {
     A.getInstance();
  }
}
上面代码"private static A aa = new A();"这句我看起来有点像是递归写法。还有我想了很久,也不知道这个内存图该怎么画?在内容中,它是怎么表示的?请哪位高手指导一下,如果毕老师看见了,也请指导一下。谢谢各位。不解决这个问题。感觉无法继续往下学了。

6 个回复

倒序浏览
黑马网友  发表于 2011-8-27 12:38:20
沙发
补充:
从老师的讲课中得知类中的方法(构造方法、静态方法、非静态方法)都放在内存的方法区(内存分为:堆、栈、方法、代码四块)中,那么在使用的时候除了加载的次序和使用方法(一个是类名调用,一个是通过对象调用)不一样外,其它还有什么不同呢?
回复 使用道具 举报
黑马网友  发表于 2011-8-27 15:39:21
藤椅
static  修饰的字段,代码块或者方法,在加载类的时候只被加载一次,所以不存在你所说的递归
回复 使用道具 举报
不懂,还没看到那里
回复 使用道具 举报

static  修饰的字段,代码块或者方法,在加载类的时候只被加载一次
回复 使用道具 举报
class A
{
   private A(){}//将本类的此构造函数修饰成private,这样其它类就不再创建本类的对象实例了,
   private static A aa = new A();//即然其它类不能创建本类对象 ,那本类就在本类内自己创建一个对象以便使用,而且些对象被private修饰,外部类也不能直接使用本对象
   public static A getInstance();//上一名创建了一个对象,应该是要使用的,但被private修饰,不能直接在本类外使用,那就要对外提供一方法来获得本类对象。
   {                                            //而且此方法和要获得的对象都被static修饰,也就是在本类被加载进来的时候就拥有了本类对象和此方法。
     return aa;
   }
}
class B
{
  public static void main(String[] args)
  {
     A.getInstance();//因为getInstance是static 方法,随A类的加载已被加载,而且B类中不能创建A类对象,所以可以用类名.getInstance(),获得A类对象。而且此对象唯一,
                 //属于单例设计模式。
  }
}
回复 使用道具 举报
{:soso_e179:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马