静态方法中的变量一定要是静态变量么

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:05:46
public class Shape {
private Shape(){

}
public static Shape shape = null ;
public static Shape getInstance()
{
if(shape==null)
shape = new Shape() ;
return shape ;
}
public static void main(String args[]){
Shape.getInstance() ;
}
}
在这个单例模式中 public static Shape shape = null ;
为什么这个一定要是静态的,难道是静态方法中的变量就一定要是静态的么

静态方法中也可以有局部变量,
但是要想使用全局的变量(成员变量),由于静态方法是不依赖于对象的,因为它是不能访问普通的成员变量,只能访问同样是不依赖于具有对象的静态变量。


public class Foo
{
private int obj_member = 3;
private static int static_member = 4;
public static void static_fun()
{
int local_var = 5; //这个是静态方法中的局部变量
static_memeber += local_var; //访问静态成员 OK
//obj_memeber += local_var; 非法 不能访问普通的成员变量
}
}

就是为了保证你始终取得是同一个实例。
构造函数私有以后就限制调用者你必须使用getInstance来取得对象实例。

不一定,不过静态方法只能用类中的静态变量