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

关于这道题中的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

正在回答

3 回答

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


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

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

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

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

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

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

blowwind

请问一下这里的this代表的是外部类实例还是内部类实例?
2020-04-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530631    人
  • 解答问题       6091    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信