为什么外部类name需要HelloWorld.this.name
而内部类不需要HelloWorld呢
因为内部和外部类拥有同名的变量。内部类是可以访问内部类及外部类的所有属性和方法的,但如果出现同名变量的话,按照就近原则访问。所以需要HelloWorld.this.name来指代距离较远的变量。
评论区上传一直失败,假象你处在一个房间A内,A有4个出口,其中一个出口名字为name,房间A外面还有一大的围栏B,B也有4个出口,其中也有扇门为name,如果只是告诉你去name出口,那默认情况下你会先去A房间的name门,而不是B的name门。
仔细看看,你外部类定义了一个变量name,内部类定义了一个变量name,那么你输出的时候程序怎么区分这两个name呢?
所以才有了外部类、内部类的说法,一个name属于外部的,一个属于内部的,
HelloWorld.this.name
HelloWorld 外部类
this调用最近的对象,方法都可以
name变量
这条语句处于内部类,默认是访问当前类成员,也就是内部类,加也不影响,但没必要
Java里面还有一种说法叫做就近原则
内部类和外部类成员名称相同都是 name,需要区分使用,用 “外部类.this.成员名" 访问外部类成员,用"成员名" 直接访问内部类成员。