我在网上搜索了类似的问题,但找不到。所以,在这里发帖。
在下面的程序中,为什么“i”的值被打印为 100?
AFAIK 'this' 指的是当前对象;在这种情况下是“TestChild”,并且类名也正确打印。但是为什么实例变量的值不是200呢?
public class TestParentChild {
public static void main(String[] args) {
new TestChild().printName();
}
}
class TestChild extends TestParent{
public int i = 200;
}
class TestParent{
public int i = 100;
public void printName(){
System.err.println(this.getClass().getName());
System.err.println(this.i); //Shouldn't this print 200
}
}
此外,以下输出与我预期的一样。当我从父类调用“ this.test() ”时,调用子类方法。
public class TestParentChild {
public static void main(String[] args) {
new TestChild().printName();
}
}
class TestChild extends TestParent{
public int i = 200;
public void test(){
System.err.println("Child Class : "+i);
}
}
class TestParent{
public int i = 100;
public void printName(){
System.err.println(this.getClass().getName());
System.err.println(this.i); //Shouldn't this print 200
this.test();
}
public void test(){
System.err.println("Parent Class : "+i);
}
}