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

关于这道题中的this如何使用的问题

这道题中内部类输出的那个地方我用eclipse打的时候

  //外部类的私有属性name
    private String name = "imooc";//这个就要加上static
 ……
 public class Inner {
  String name = "爱慕课";
        //内部类中的方法
  public void show() { 
   System.out.println("外部类中的name:" + HelloWorld.this.name);//不加this那前面必须为static类型,这个为什么
   System.out.println("内部类中的name:" + name  );
   System.out.println("外部类中的age:" + age);
  }
 }

我就没明白:

1.为什么不加this会报错,(HelloWorld.this.name)

2:也是就是改正这个问题为什么要么加上this,要么就把外部类加上static

提问者:itwai 2020-04-10 11:05

个回答

  • 慕设3130384
    2020-04-27 10:20:10

    很多都是规则,多写写就慢慢理解了


  • blowwind
    2020-04-12 22:42:34

    你要把HelloWorld.this看做是一个整体,是内部类里面用来访问外部类实例变量的方式,就是这么规定的;在内部类中this代表的是本内部类实例,而HelloWorld.this(假设HelloWorld是外部类)就是代表对应的外部类实例。

  • 苏格拉底F
    2020-04-10 18:07:23

    这个没有为什么,这是Java的规则,记住就好了。

    static是静态修饰符,加static后变成静态成员变量,在内部类中可以直接用类名.静态成员变量名来访问外部类的成员变量