静态可以访问哪些数据或方法

解决方案 »

  1.   

    不管是静态还是非静态,总之一个原则就是要合理如果楼主看明白偶下面说的,问题应该可以自己总结:比如有一个类:
    class MyClass{
        private int a;
        public MyClass(int aValue){
            this.a = aValue;
        }
        
        public static void f(){
        }
    }如果我们在程序中创建了N个对象:
    MyClass obj1 = new MyClass(1);
    MyClass obj2 = new MyClass(2);
    ...
    MyClass objn = new MyClass(n);那么内存中就会有n个类型为MyClass的对象,每个对象的私有属性a的值都不相同。而我们知道,静态方法是可以通过类访问的,那么如果在静态方法 f() 中访问变量 a 
    public static void f(){
        System.out.println(a);
    }
    那么它应该输出什么值呢?从另一个角度看,如果程序中没有创建任何 MyClass 类的对象而直接调用 MyClass.f(),它又应该输出什么值呢?
      

  2.   

    静态的只能访问静态的东东,有Static的!
    如果想访问非静态的东东,必须实例化了才能用!
      

  3.   


    MyClass中的a必须声明为static ,否则会有编译错误。
    不存在f()不知道输出的是哪个a。