Java-Java:关于"类名.this.方法名"这种调用方式
public class A {
public void work() {
System.out.println("A is working...");
}
public A() {
A.this.work(); // 写作this.work()、work()效果相同
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
子类Override父类的方法的方向思考就知道了
这种情况下这种写法真的是没用的。这种写法( 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)。
然后实例方法又是虚拟方法调用,结果就出现了你上面的疑惑。