Why the output is:
> B.foo(): bar = null
> B.foo(): bar = B.bar
>a.bar = A.bar
>B.foo(): bar =B.bar
BUT not:
> B.foo(): bar = null > A.foo(): bar = A.bar >a.bar = A.bar >B.foo(): bar =B.bar
1) B extends A so doesn't it suppose call to A's class? 2) Why by a.bar class A is called and not B ? 3)May you explain the output? code:
public class A {
String bar= "A.bar";
A() { foo(); }
public void foo() {
System.out.println("A.foo(): bar = "+ bar);
}
}
public class B extends A {
String bar= "B.bar";
B() { foo(); }
public void foo() {
System.out.println("B.foo(): bar = "+ bar);
}
}
public class C {
public static void main(String[] args) {
A a= newB();
System.out.println("a.bar = "+ a.bar);
a.foo();
}
}