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();
    }
}
 
     
     
    