+ -
当前位置:首页 → 问答吧 → 那个高手给回答个神奇的问题?谢了

那个高手给回答个神奇的问题?谢了

时间:2011-10-29

来源:互联网

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 吧,那为什么非要先创建外部类啊

作者: zl117967955   发布时间: 2011-10-29

内部类相当于外部类的一个成员变量或者方法,当你调用一个类中的成员变量或者方法的时候,当然要先实例化一个该类的对象了。

作者: qqhw123   发布时间: 2011-10-29

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

作者: xiongyu2006   发布时间: 2011-10-29

内部类相当于外部类的一个成员变量或者方法,当你调用一个类中的成员变量或者方法的时候,当然要先实例化一个该类的对象了

作者: scrack   发布时间: 2011-10-29

人是一个类,人的胳膊是另一个类,没有人怎么会有人的胳膊呢,相当于依赖关系

作者: JayYounger   发布时间: 2011-10-29

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

作者: zc18792636599   发布时间: 2011-10-29

楼上的查不多都说的挺全的。

作者: jiutian_good   发布时间: 2011-10-29