Java-Java:关于"类名.this.方法名"这种调用方式

发布于 2017-07-03 17:36:00 字数 215 浏览 1331 评论 2

public class A {
    public void work() {
        System.out.println("A is working...");
    }

    public A() {
        A.this.work(); // 写作this.work()、work()效果相同
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清晨说ぺ晚安 2017-08-30 02:37:27

子类Override父类的方法的方向思考就知道了

清晨说ぺ晚安 2017-07-28 06:41:12

这种情况下这种写法真的是没用的。这种写法( Qualified this)的用处就是在内部类指向外部类的实例。(如果你在B里写A.this,会编译不了,错误信息说A不是B的外部类)

 public class C {
public void work() {
System.out.println("C is working...");
}

public C() {
new D().work();
}

class D {
public void work() {
C.this.work();
System.out.println("D is working...");
}
}

public static void main(String[] args) {
new C();
}
}

至于为什么允许这样写,我猜是为了统一,既然可以让内部类指向外部类的实例,为什么不能指向自己的实例(既然允许写在D里写C.this,为什么不能在C里写C.this)。

然后实例方法又是虚拟方法调用,结果就出现了你上面的疑惑。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文