问:
class Outer { int i=5; class Inner { int i=4; public void test() { int i=3; System.out.println(i);//注释1 System.out.println(this.i);//注释2 System.out.println(Outer.this.i);//注释3 } } public static void main(String []args) { Outer out=new Outer(); Outer.Inner inner=out.new Inner(); inner.test(); } } 这里的注释2的this 和注释3的Outer.this不都是那个inner对象吗 那个注释3我很不理解 谁可以给我详细的解释下
答:
首先打印的结果是 3 4 5 3是函数体test的私有变量,在函数test内可见,除了这个范围就不可见; 4是函数test所从属的类实例的变量,即inner类实例的变量,仅在inner类实例的范围内可见; 5是Outer类实例的变量i,不是指inner类。 你要记住,在Java中,this关键字指的是某个类的实例,Outer.this指的是Outer类的实例;如果this前面没有指定范围,那么this指的是本类的作用域范围,在函数体test中,this的范围只能向上延伸至inner