黑马程序员技术交流社区
标题:
关于单例设计模式的一个问题
[打印本页]
作者:
刘宁
时间:
2012-3-12 19:55
标题:
关于单例设计模式的一个问题
class Single
{
private Single(){}
private static Single s = new Single();
public static Single getinstance()
{
return s;
}
} 这个类中,建立的本类对象是静态,为什么静态中的S值还能指向堆内存哪?不是静态方法只能访问静态成员吗?
作者:
杨毅
时间:
2012-3-12 20:21
s是静态成员嘛.....
作者:
王睿
时间:
2012-3-12 20:59
private static Single s = new Single();
new Single 把地址值赋给了s 这个就相当于 static s = 0x9222; 静态的也能赋值啊
作者:
潘许超
时间:
2012-3-12 23:50
只是获取了地址,这是静态引用
作者:
a504079589
时间:
2012-3-13 01:22
s本来就是静态的啊, 你在 private static Single s = new Single(); 的时候, 就等于把new出的Single() 赋给了s;
而new出的Single()是存在于堆内存之中, 为引用;
单例设计模式 就是为了保证在程序中的某个类只存在一个对象, 所以把构造函数私有了, 但是这个类又不能创建对象, 就在这个类的内部自己创建一个对象并用成员变量记住它,也正因为这个类不能创建对象, 此成员变量需要是静态的, 还能让类加载的时候创建唯一的对象, 为了提高了安全性,外界也无法修改的同时要把成员变量也私有化, 提供一个公有的方法用来获取唯一的对象, 由于需要在不创建对象的情况下使用, 所以也要静态;
作者:
黑马张平
时间:
2012-3-13 13:05
学习学习!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2