黑马程序员技术交流社区

标题: 单例设计模式设置值问题 [打印本页]

作者: 林其荣    时间: 2013-1-15 14:27
标题: 单例设计模式设置值问题
本帖最后由 张向辉 于 2013-1-16 11:09 编辑

public static void main(String[] args) {
  student s=student.show();
  student s1=student.show();
  s1.setAge(6);
  s.setAge(5);
  System.out.println(s1.getAge());
  System.out.println(s.getAge());
}
}
class student{
private int age;
public void setAge(int age){
  this.age=age;
}
public int getAge(){
  return age;
}
private student(){}
static student stu=new student();
public static student show(){
  return stu;
}
}

我用单例设计模式写了一个示例 
我想问下这个结果为什么打印的是5 5 而不是6 5 s1.setAge(6)不是把值设置成6了吗那打印
s1.getAget();结果不应该是6吗  而s.getAget()获取的值就为5 那为什么s.getAget();
就是6呢?  谁能帮我详细分析下;

作者: 黑马刘向阳    时间: 2013-1-15 14:44
因为s1和s是同一个对象啊
作者: 唐晓    时间: 2013-1-15 15:23
单例模式:保证一个类在使用过程中,只有一个实例。优势就是他的作用,这个类永远只有一个实例。
student s=student.show();
student s1=student.show();
这里的s和s1是一个实例,你给s赋值后后给s1赋值,s1的值已经覆盖掉了s的值了,所以,打印结果是5 5
作者: 周志强    时间: 2013-1-15 15:31
你用的这个是先初始化对象,称为饿汉式的单例模式,3、        其优势就是:解决一个类在内存只存在一个对象,所以你的
student s=student.show();
student s1=student.show();
也就是  s和s1指向同一个引用。s1会把s覆盖掉,所以打印只有5 5




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