Why B() when initializing part of class A using overrides method print() defined in class B?
Expected output:
A
4
Real output:
0
4
public class Test
{
    public static void main(String[] args)
    {
        new B();
    }
}
class A
{
    public A()
    {
        print();
    }
    
    public void print()
    {
        System.out.println("A");
    }
}
class B extends A
{
    int a = 4;
    public B()
    {
        print();
    }
    
    @Override
    public void print()
    {
        System.out.println(a);
    }
}
 
    