读书人

关于内部类,该怎么处理

发布时间: 2012-04-25 19:32:32 作者: rapoo

关于内部类
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(); 

读书人网 >J2SE开发

热点推荐