如图java代码里面,不需要用new关键字实例化类就可以直接使用类里面的对象吗?

Single.s=null前面不需要实例化类吗
2024-11-29 13:16:04
推荐回答(5个)
回答1:

声明为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对象

回答2:

可以,在抽象类实例化对象的时候,是不能用new关键字去实例化对象的,那么我们就必须在此类中定义static方法, 用类名.静态方法去实例化对象。

回答3:

那里有一句 private static single instance = new single();
你没看到吗,这里就是初始化的,他这个getInstance()是为了保证只有一个该类的实例,就是设计模式中经常用到的单例模式,你可以去看下java的设计模式类的书籍就了解为什么要这样了.

回答4:

必须实例化才能使用类成员方法。否则报错。
s=Single.getInstance();已经在给s实例化了.

回答5:

可以啊 定义static 就可以了