声明为static的方法为静态方法或者叫类方法,声明static的变量为静态变量或者叫类变量。 类变量或者类方法不需要实例化一个对象就可以用类名加点来调用。
Single s = null ; 实际上只是声明了一个引用s,指定它为空,并没用new出来一个对象;
s = Single.getInstance();这句是关键,正如我上面所说的,这个getInstance()方法声明为Static,所以可以直接用类名加点加方法名字来直接调用也就是——————Single.getInstance();
而这个getInstance()方法返回的是类变量instance,可以看到第一句的 instance = new Single();
也就是说这个变量instance本身的值是新new出来一个Single对象的引用,指向了内存新new出来的一个single对象。
然后把这个引用的值给了原本为空的引用S,也就是说让S这个引用也指向了内存里新new出来的这个single对象
可以,在抽象类实例化对象的时候,是不能用new关键字去实例化对象的,那么我们就必须在此类中定义static方法, 用类名.静态方法去实例化对象。
那里有一句 private static single instance = new single();
你没看到吗,这里就是初始化的,他这个getInstance()是为了保证只有一个该类的实例,就是设计模式中经常用到的单例模式,你可以去看下java的设计模式类的书籍就了解为什么要这样了.
必须实例化才能使用类成员方法。否则报错。
s=Single.getInstance();已经在给s实例化了.
可以啊 定义static 就可以了