黑马程序员技术交流社区

标题: 毕老师视频疑问! [打印本页]

作者: morlay2011    时间: 2011-8-27 09:12
标题: 毕老师视频疑问!
在毕老师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();"这句我看起来有点像是递归写法。还有我想了很久,也不知道这个内存图该怎么画?在内容中,它是怎么表示的?请哪位高手指导一下,如果毕老师看见了,也请指导一下。谢谢各位。不解决这个问题。感觉无法继续往下学了。
作者: 匿名    时间: 2011-8-27 12:38
补充:
从老师的讲课中得知类中的方法(构造方法、静态方法、非静态方法)都放在内存的方法区(内存分为:堆、栈、方法、代码四块)中,那么在使用的时候除了加载的次序和使用方法(一个是类名调用,一个是通过对象调用)不一样外,其它还有什么不同呢?
作者: 匿名    时间: 2011-8-27 15:39
static  修饰的字段,代码块或者方法,在加载类的时候只被加载一次,所以不存在你所说的递归
作者: 郭繁森    时间: 2011-12-17 16:28
不懂,还没看到那里
作者: lvwenwen88    时间: 2012-1-1 17:38

static  修饰的字段,代码块或者方法,在加载类的时候只被加载一次
作者: 为梦而战    时间: 2012-1-1 18:06
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类对象。而且此对象唯一,
                 //属于单例设计模式。
  }
}

作者: 15574016362    时间: 2012-5-30 16:54
{:soso_e179:}




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