为了账号安全,请及时绑定邮箱和手机立即绑定

为什么访问外部类的中的b:那里不能 直接 Outer.b 而是要Outer.this.b

为什么访问外部类的中的b:那里不能 直接 Outer.b   而是要Outer.this.b

正在回答

5 回答

我来说一个比较容易理解的。

因为System.out.println这个指令在Inner里,它去输出变量的时候取的是就近的变量值,所以Outer.b取的是Inner类内的值,虽然写的是Out.b的值但实际上取的是Inner.b的值。

Outer.this.b取的外部类的值可以理解成这里的this明确的是告诉程序取Outer这个类的变量值。因为上面那个实际上取的是Inner.b的值,所以不会去用Inner的b

通俗点来讲就是如果我让你去买东西你肯定会找最近的商店去买(System.out.println取的就是最近的变量b,因为Inner的变量b离它最近),如果我指定你去一个远的商店里去买(Outer里的b),那你就必须去那里买,虽然Inner离你近但是你也不能去那里买。这里的this相当于Outer这个外部类。其实只要理解了this表示什么意思,这个问题不难理解。

我个人是这样理解this的,this的左边是谁这个this就代表谁,如果this左边没有对象,那么这个this就表示当前this所在的这个类。

0 回复 有任何疑惑可以回复我~

应该这么说,如果访问的外部类属性是静态的可以不用this,可以直接用外部类名.属性名,但如果是非静态的就必须用外部类名.this表示当前外部类的对象再加上.属性名,以表示访问的是外部类的属性

0 回复 有任何疑惑可以回复我~

为什么不是Outer.b和Inner.b之间访问呢

0 回复 有任何疑惑可以回复我~

我也有这样的疑问

0 回复 有任何疑惑可以回复我~

因为在内部类中也有个变量b,所以需要这样写

1 回复 有任何疑惑可以回复我~
#1

haiya

但是前面的Outer已经能表面他是外部类了。this代表的是当前对象,Outer.b代表的应该是类的属性而不是对象的属性。
2015-07-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么访问外部类的中的b:那里不能 直接 Outer.b 而是要Outer.this.b

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信