本帖最后由 wwwww5aaaaa 于 2010-02-15 18:52:17 编辑

解决方案 »

  1.   

    因为DataOnly是在DataOnlyTest中的inner class,所以要想调用DataOnly的构造方法,就必须通过DataOnlyTest的一个实例
      

  2.   

    因为你这个class DataOnly是内部类,还有,它是非静态的 
    所以DataOnly do = new DataOnly();可以表现为 
    DataOnly do = this.new DataOnly();//这里this是被隐藏的,当你实例化非静态内部类的时候,必须有它外部类的引用,所以这里有隐藏的this!所以报这个错误! 可以改为这样 DataOnlyTest dot = new DataOnlyTest(); 
        DataOnly do = dot.new DataOnly(); 
      

  3.   

    第一段: 他在成全区定一个了一个内部类。也就是说这个类定义为成员,因为没有用static所以该类不是静态的。用静态方法main来调用DataOnly data=new DataOnly();就会报错。(注意是使用该类来声明变量的时候)第二段:DataOnlyTest与DataOnly 互相独立。而且main中在调用其实,进行了实例化。这种是最正常不过的情况。第三段:内部类在main中定义的,所以属于main局域范畴(内存分配在栈中),main中自然可见。
      

  4.   

    static 表示你用到了该类就会产生了,而其他类的成员要使用类的实例时才产生。就是你要new一个
    所以static的成员或代码的生命周期超过其他类成员的。所以它不能访问还没有产生的实例成员。因为它们可能还不存在呢。
      

  5.   

    main方法是静态的,所以只能使用静态的方法或字段