一道简单的考试题,有点疑问
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去掉! 
------解决方案--------------------晕
------解决方案--------------------这是个最基本的概念:静态方法只能访问静态变量.