Java中的“this”变量实际上如何设置为当前对象?
考虑:
class TestParent{
public int i = 100;
public void printName(){
System.err.println(this); //{TestChild@428} according to the Debugger.
System.err.println(this.i); //this.i is 100.
}
}
class TestChild extends TestParent{
public int i = 200;
}
public class ThisTest {
public static void main(String[] args) {
new TestChild().printName();
}
}
我知道有人问过类似的问题,但我无法对Java中的“this”变量有一个确切的理解。
让我试着解释一下我如何理解上图的结果。
由于它是调用该方法的对象,因此根据调试器,第 6 行中的变量设置为对象 - {TestChild@428}。
new TestChild()
printName()
this
TestChild
但是,由于Java没有虚拟字段 - 我不完全确定这意味着什么,但我从概念上理解它是支持多态性的Java方法相反的 - 在编译时设置为100。
this.i
TestParent
因此,无论是什么,在方法中将始终是类中的变量。
this
this.i
TestParent
i
TestParent
我不确定我的理解是否正确,所以如果我错了,请纠正我。
而且,我的主要问题是,
如何将变量设置为调用该方法的当前对象?它是如何实际实施的?this