日期:2014-05-20  浏览次数:20590 次

一道简单的考试题,有点疑问
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去掉!

------解决方案--------------------

------解决方案--------------------
这是个最基本的概念:静态方法只能访问静态变量.