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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
单例设计                                                        单例设计   意思new的对象只在内存中存在一个 再次调用更改数据  是在同一个对象中更改
*/
import java.util.Scanner;
class Demo_82SingleDemo
{
        public static void main(String[] args)
        {
                Single s=Single.getInstance();                                                //调用getInstance方法  返回一个Single对象
                Single s1=Single.getInstance();                                                //再次调用的时候还是   上次创建的那个对象   Single对象只存在一个  因为只创建了一个
                s1.setAge(111);
                System.out.println(s.getAge());
                System.out.println(s1.getAge());
                Demo_82SingleDemo d=new Demo_82SingleDemo();
                d.run();
        }
        public  void run(){
                System.out.println("静态方法不能调用非静态方法的原因是因为  静态随着类加载到内存存在,这时候还有有对象 也就没有非静态方法这些对象的特有属性和函数存在");
                System.out.println("在静态方法调用非静态方法的时候必须先创建对象, 对象存在对象中的方法肯定存在");
        }
}
class Single
{
        private int age;                                                                                //成员变量一般都是私有化进行封装
        private   Single(){}                                                                        //私有化了构造函数  使对象不能在类外面创建
        private static Single s=new Single();                                        //在类中创建一个对象  在返回本对象   在类外调用的时候   使用的永远是这个对象
        public static Single getInstance(){
                return s;
        }
        public  void setAge(int a){                       
                this.age=a;
        }
        public int getAge(){
                System.out.println(age);
                return age;
        }
}
/*class SingleDemo{
        private static SingleDemo s=new SingleDemo();                                   //创建一个对象  加static的原因 是因为构造函数已经被私有化  在类外不能出创建对象   
        private SingleDemo(){};                                                                               
        public static SingleDemo getInstance(){                                                                //构造函数已经被私有  所以不能再创建对象  通过对象访问  只能通过类名访问
                return s;                                                                                                                //类名访问只能是静态函数  而静态函数中的成员也必须是静态  所有123行都要加静态
        }
}
这个是饿汉式单例设计*/
class SingeDemo {
        private static SingleDemo s=null;
        private SingleDemo (){}
        public static SingleDemo getInstance(){
                if(s==null){
                        s=new SingleDemo();                                        //延迟加载  创建对象
                        return s;
                }
        }
}

3 个回复

倒序浏览
好棒好棒呀
回复 使用道具 举报
加油 。。。。飘过
回复 使用道具 举报
不错啊        努力吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马