日期:2014-05-20  浏览次数:20716 次

关于内部类
public class Ex_4_28 {
  public static void main(String [] args){
  Outer1 out=new Outer1();
   
  out.inner.showOutVar();
  }
}

class Outer1{
private int outVar=0;
Inner inner=new Inner();

public class Inner{
public void showOutVar(){
outVar++;
System.out.println(outVar);
}
}
}
问题:这个输出结果为什么是2呢?
  蓝色的inner是Inner类的实例吗?

------解决方案--------------------
偶 呵呵
Outer1 out=new Outer1();//new 了一个Outer1实例 out
Outer1.Inner obj=new Outer1().new Inner();//new 了一个Inner 实例 obj
 Outer1.Inner o=out.new Inner();//new 了一个Inner实例 o
 obj.showOutVar();// 对象obj outVar=1;
 o.showOutVar();//o对象 使得 outVar=1;
 out.inner.showOutVar();// out对象属性outVar=2;

 Inner是Outer1的内部类
这样不知道你能不能理解,,,画一下内存变化图就清楚了。



------解决方案--------------------
这个程序运行时,产生了2个 外围类对象:一个是out,另一个没有引用名。我们暂时叫"noname".
是通过这句产生的:
Java code
Outer1.Inner obj=[color=#0000FF]new Outer1()[/color].new Inner();