一道简单的考试题,有点疑问
class test
{
private int m;
public static void fun()
{
//some code...
}
}
如何使成员变量m被函数fun()直接访问?
A:将private int m 改成protected int m
B:将private int m 改成public int m
C:将private int m 改成static int m
D:将private int m 改成int m
答案是C,想问下其他几个答案为什么不对?fun()和m是在一个类中啊,按道理都是可以访问的嘛
------解决方案--------------------C 拼感觉选C 你在fun()里随便输出一下吧。。fun()肯定会被执行 我感觉和 构造函数一样执行 在构造函数之前执行好象。。试试吧。。。呵呵。
我也是菜鸟。
------解决方案--------------------static方法只能访问static变量!
还有一办法就是把方法中的static去掉.
当然选C
------解决方案--------------------因为方法是static 的,就只和类相关了,
如果变量m不是static的话,那是不是就可以通过new一个对象来改变值了
那 fun()中的m该随着哪个对象的m改变呢?是不是就和static只与类相关矛盾了
所以static方法的变量只能是static的
个人理解,
------解决方案--------------------static 是静态方法
A:将private int m 改成protected int m
B:将private int m 改成public int m
换汤不换药,都是一样的。
public static void fun(),调用的是static方法,所以D不对
------解决方案--------------------STATIC 法只能访问STATIC 变量
------解决方案--------------------静态方法只能直接访问静态变量~~~~
------解决方案--------------------静态方法只能直接访问静态变量~~~~
------解决方案--------------------static 方法只能直接访问static变量,但是直接访问static变量的方法不一定要static的
------解决方案--------------------静态方法只能访问静态变量。要不就把方法的STATIC去掉!
------解决方案--------------------晕
------解决方案--------------------这是个最基本的概念:静态方法只能访问静态变量.