HelloWorld

来源:7-6 Java 中的成员内部类

DT2010

2019-02-16 13:55

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

而内部类不需要HelloWorld呢

写回答 关注

5回答

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

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

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


    Ly要做学霸

    重点要区分静态和非静态:静态是指所有类共享,内存中只有一份。而非静态则是实例化后所共有的

    2019-04-22 13:49:58

    共 1 条回复 >

  • 弯曲的小手
    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.成员名"   访问外部类成员,用"成员名" 直接访问内部类成员。

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530636 学习 · 6091 问题

查看课程

相似问题