I'm calling ChildTest class methods with ChildTest reference only i.e.
ChildTest child = new ChildTest(); // not dynamic dispatching.
My question is why child.foo() output is Test foo called 10
class Test {
int x = 10;
public void foo() {
System.out.println("Test foo called " + x);
}
public static void main(String args[]) {
ChildTest child = new ChildTest();
System.out.println(child.x);
child.foo();
child.bar();
}
}
class ChildTest extends Test {
int x = 20;
public void bar() {
System.out.println("ChildTest Bar called " + x);
}
}