关于static的问题,求助 (50分)

  • 主题发起人 主题发起人 zcqme1213
  • 开始时间 开始时间
Z

zcqme1213

Unregistered / Unconfirmed
GUEST, unregistred user!
static方法的三个约束是:
1:只能调用其他的static方法
2:只能访问static数据
3:没有this句柄
我举个例子
class example
{ int a;
int range(a){
int b;
return a*b;
}
public static void main(String[] args){
//以下省略
}
}
我的问题是 既然main()方法是static类型,按照上面的三个约束,那么变量 b和方法range()也应该是static类型的,可实际不是如此,能否给我介释一下

 
方法可以是static ,如果方法是static,只会初始化一次,
如果方法没有static修辞在一个类中,那么就先得创建该类,然后用 类.方法名 进行调用该方法.你举的例子有问题.
 
//那么变量 b和方法range()也应该是static类型的
?没有static关键字怎么能算是静态? 先弄清楚类变量和实例变量
 
你现在在main()方法里面能直接访问a吗?显然不能,你要访问a,必须先创建对象,然后
才能访问a.因为a 是实例变量,静态方法不能直接访问实例变量。
 
szzhb说的没错,
是不能直接访问的,
必须创建对象后,作为对象的成员来访问
 
新同志还有问题啊.
问题都问的模模糊糊,不太明白.
你的例子中,变量b 根本就是再方法range()内部定义的局域变量,
谁也没有办法访问.
方法range() 既然没有声明是静态的static,那么就只能通过对象object来访问.
换句话说必须建立一个example 的object 来引用这个方法.
更狡猾的问题出现在 变量 a 上.class 里面定义了一个int a, 这个a 是
class 的一个 feild. 没有特别声明应该至少是protected.
而方法rang()的那个a 就不同了,他是这个方法的参数.按照"对外屏蔽"
原则,所有里面的方法 a,都由这个a 算,不是外面定义的那个a .至于
main 能不能直接访问方法rang(), 答案显然是不行.
不过没看到有,constructor, 大概code 没有抄全把.
 
没有static修饰的为实例方法,静态方法不能直接访问,要想访问只能先创建一实例,然后才能调用
 
public static void main(String[] args){}
这是控制台应用程序的固定写法,没有理由。
 
楼上所说的“控制台应用程序”是啥意思啊。
偶是学英文java的,有英文的单词么?
 
简单问题复杂化,static 就是静态
控制台应用程序就是控制台应用程序,中文都学不好,就不要学英文和java。
 
后退
顶部