本质上,两者之间没有区别
this.foo()
和
anyObject.foo()
因为两者都是以相同的方式“实现”的。请记住,“最终”“面向对象只是一个抽象,而在“现实”中发生的事情是这样的:
foo(callingObject)
换句话说:每当您使用某个对象引用来调用方法时…最后,就不会对某个对象进行调用。因为深入汇编程序和机器代码,所以不存在诸如“对某事的呼叫”之类的东西。
真正发生的是对函数的调用。第一个参数(在源代码级别上隐式/不可见)是该对象。
顺便说一句:您实际上可以用Java将其记录下来,例如:
class Bar { void foo(Bar this) { ... }以后使用
new Bar().foo();
最后,对于this.fieldA:您可以引用内存中的某个位置;还有一张表格,告诉您在哪个“偏移量”上可以找到fieldA。
编辑-仅作记录。如果您对foo(Bar this)的更多详细信息感兴趣-您可以转到这个问题;在后面的Java规范中提供详细信息!



