class Outer {
        private int i = 10;
        class Inner{
            public void seeOuter(){
                System.out.print(i);
            }
        }    
        public static void main(String[] args) {
            Outer out = new Outer();
            Outer.Inner in = out.new Inner();
            //Outer.Inner in = new Outer().new Inner();
            in.seeOuter();
        }
    }
在外部类的静态方法中实例化内部类对象,必须先创建外部类对象。请问这是为什么呢?更深的原因跟栈和堆有关系吗?谢谢了。
我自己觉得 main中有权限访问到 Inner 吧,那为什么非要先创建外部类啊

解决方案 »

  1.   

    除非Inner是static的,否则,必须要通过Outer的对象创建Inner的对象。内部类是一个从属关系,你想想,如果没有外部类的包含关系,你随便写个类,你能说它是内部类吗!
      

  2.   

    lz很有想法,看书的时候从来么想过这些问题,深层的不懂,浅层的就像上边说的,呵呵,虽然没有帮到lz,但给你增加下人气,支持下
      

  3.   

    除非Inner是static的,否则,必须要通过Outer的对象创建Inner的对象。内部类是一个从属关系,你想想,如果没有外部类的包含关系,你随便写个类,你能说它是内部类吗