方法如何在运行时查找其对象的实例变量

HAL*_*000 2 java jvm object

创建对象并调用其公共方法之一时,可以使用本地属性.它们存放在哪里?我的意思是,在像C这样的语言中,一切都很清楚:要使用的变量必须作为参数传递给函数(或者必须是全局的).

它在Java(以及其他OO语言)中会发生什么?本地方法如何使用实例的属性?

简而言之:当我们说this.variable,方法如何找到自己的变量?"this"指针是否作为函数参数隐式传递?

Mar*_*nik 5

你是对的:每个实例方法都是一个函数,它声明的参数多于显式声明的参数.第一个参数始终是隐式this引用(指针).这只是Java语法的伪装:

firstArg.method(secondArg, thirdArg)
Run Code Online (Sandbox Code Playgroud)

只是另一种写作方式

method(firstArg, secondArg, thirdArg)
Run Code Online (Sandbox Code Playgroud)

并注意第一个参数的特殊性:它是唯一一个在其类型上发生方法动态调度的方法.