java 嵌套类 访问方法

问:
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值