java 嵌套类 访问方法
classOuter{inti=5;classInner{inti=4;publicvoidtest(){inti=3;System.out.println(i);//注...
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我很不理解 谁可以给我详细的解释下 展开
{
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我很不理解 谁可以给我详细的解释下 展开
4个回答
展开全部
首先打印的结果是
3
4
5
3是函数体test的私有变量,在函数test内可见,除了这个范围就不可见;
4是函数test所从属的类实例的变量,即inner类实例的变量,仅在inner类实例的范围内可见;
5是Outer类实例的变量i,不是指inner类。
你要记住,在Java中,this关键字指的是某个类的实例,Outer.this指的是Outer类的实例;如果this前面没有指定范围,那么this指的是本类的作用域范围,在函数体test中,this的范围只能向上延伸至inner
3
4
5
3是函数体test的私有变量,在函数test内可见,除了这个范围就不可见;
4是函数test所从属的类实例的变量,即inner类实例的变量,仅在inner类实例的范围内可见;
5是Outer类实例的变量i,不是指inner类。
你要记住,在Java中,this关键字指的是某个类的实例,Outer.this指的是Outer类的实例;如果this前面没有指定范围,那么this指的是本类的作用域范围,在函数体test中,this的范围只能向上延伸至inner
展开全部
this表示这个内部类的当前对象,Outer.this表示的是这个内部类对象所相关的外部类的对象,所以最后结果是
3
4
5
3
4
5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很明显Outer.this的this指Outer类嘛!其实这个嘛是JAVA规则!不好理解,也要习惯
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Java语言规定是这样的,没有为什么。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询