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

HelloWorld

https://img1.sycdn.imooc.com//5c67a570000183b906900421.jpg为什么外部类name需要HelloWorld.this.name

而内部类不需要HelloWorld呢

正在回答

5 回答

因为内部和外部类拥有同名的变量。内部类是可以访问内部类及外部类的所有属性和方法的,但如果出现同名变量的话,按照就近原则访问。所以需要HelloWorld.this.name来指代距离较远的变量。

评论区上传一直失败,假象你处在一个房间A内,A有4个出口,其中一个出口名字为name,房间A外面还有一大的围栏B,B也有4个出口,其中也有扇门为name,如果只是告诉你去name出口,那默认情况下你会先去A房间的name门,而不是B的name门。


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

Ly要做学霸

重点要区分静态和非静态:静态是指所有类共享,内存中只有一份。而非静态则是实例化后所共有的
2019-04-22 回复 有任何疑惑可以回复我~

仔细看看,你外部类定义了一个变量name,内部类定义了一个变量name,那么你输出的时候程序怎么区分这两个name呢?

所以才有了外部类、内部类的说法,一个name属于外部的,一个属于内部的,

HelloWorld.this.name

HelloWorld      外部类

this调用最近的对象,方法都可以

name变量

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

这条语句处于内部类,默认是访问当前类成员,也就是内部类,加也不影响,但没必要

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

Java里面还有一种说法叫做就近原则

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

内部类和外部类成员名称相同都是 name,需要区分使用,用   “外部类.this.成员名"   访问外部类成员,用"成员名" 直接访问内部类成员。

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

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信