实例,对象,类 这三个到底是什么意思?我在看java2核心技术的时候,有句话怎么也不能理解.就是静态方法不能操作对象,所以不能在静态方法中访问实例域.不能操作对象这话从何说起?在静态方法中创建一个对象不是可以的么?我只知道静态方法不能调用非静态方法.被这些概念搞混了,大师们请教啊!

解决方案 »

  1.   

    他说的意思是由于静态方法使用的时候不需要声明对象,而那些非静态的东西使用的时候需要声明对象,这样再静态方法中调用非静态的东西就会出现矛盾,所以不能调用非静态的东西
    实例有的时候是动词,有的时候是名词,再做名次的时候和对象是一个含义
    类是class
    对象是object
    引用是 referrence
    实例还有一层含义是instance
      

  2.   


    public   class   test 

        int   a=10; 
        pulblic   static   void   main(String   []   args) 
        { 
              test   test=new   test(); 
              System.out.print(test.a); 
        } 
      } 
    静态method被调用时没有传入this指针作为参数,所以就无法访问this.a,   但是在上面的代码中访问的是test.a,因为test所引用的对象你已经创建了,所以你当然就可以访问test.a了。所以理解这个问题的关键就是this指针的问题 
      

  3.   

    打个比方:
    人是看成类,那么我和你便是人这个类的实例(对象)
    静态成员和静态方法是属于类的,你不必创建对象便可
    直接使用静态方法和变量,请看下面的例子public   class   test 

        static  int  a=10; 
        pulblic   static   void   main(String   []   args) 
        { 
             int k=0;
              k=test.a //不必生成test这个类的对象
              System.out.print(k); 
        } 
      } 另外
    在静态的方法里面不可应用非静态的变量
    但是,反过来就可以,
    在非静态的方法中可以应用静态的变量
      

  4.   

    3楼上那个,你那意思是不是静态方法。不使用Test test=new Test();这句也可以调用啊
      

  5.   

    静态方法
    不需要对象就可以调用 只要把这个类载入了内存 静态方法就是存在的而那些非静态方法和非静态成员。
    只有声明了这个类的实例以后 才会存在
    所以不能在静态方法里直接调用非静态方法和静态成员 不过可以在静态方法里声明对象
    然后再通过对象调用这非静态方法 或者非静态成功 这样是允许的
    比如:
    class A {
      int age = 15;
      static viod getAge() {
        System.out.println(age); //错! 不能调用非静态成员
         A a = new A();
        Systemout.println(a.age); //正确  可以通过对象来调用非静态成员
      }
    }
      

  6.   

    class TestStatic{

    public  static int add(int a,int b){

    return a+b;
    }}
     class TestStaticMain{

    public  static void main(String[] args)
    {
    System.out.println(TestStatic.add(1,2));
    }
    }
      

  7.   

    Because static methods don't operate on objects, you cannot access instance fields from a static method. 这是书中的原文,我想大家应该已经很明白了吧,翻译问题,都别解释了。