老毕说内部类持有外部类的引用Outer.this,那是不是就是x的前面省略了Outer.this,所以代码里的两个输出语句才是相同的,是这样吗??????? 作者: 乔青山 时间: 2014-3-1 20:52
class Outer
{
private int x=3;
class Inner
{ int x = 4; //加上这句的话
void inerFunction(){ System.out.println(Outer.this.x);
System.out.println(x);
}
}
不是的,是有对外部类的变量的引用的时候,前面要加上Outer.this.
实际上x前面隐藏的是this.
只不过你的程序里内部类里没有同名变量,所以内部类调用的x仍然是外部类的,两次输出相同。
如果你加上int x = 4;