问答详情
源自:7-6 Java 中的成员内部类

HelloWorld

https://img3.mukewang.com/5c67a570000183b906900421.jpg为什么外部类name需要HelloWorld.this.name

而内部类不需要HelloWorld呢

提问者:DT2010 2019-02-16 13:55

个回答

  • Ly要做学霸
    2019-04-22 13:40:47

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

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


  • 弯曲的小手
    2019-03-28 17:53:30

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

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

    HelloWorld.this.name

    HelloWorld      外部类

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

    name变量

  • 慕妹9227211
    2019-03-23 11:27:35

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

  • 慕标5588573
    2019-02-22 17:42:18

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

  • 慕移动7222284
    2019-02-17 12:16:40

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