Order of Constructor calling

All subclasses constructor have a implicit super in its first line which calls the default constructor of super class. This is necessary because the super class methods and variables should be loaded in memory before the subclass is created.

class A
{
A()    {    System.out.println("One");    }
}
class B extends A
{
    B()    {    System.out.println("Two");    }
}
class C extends B
{
    C()    {    System.out.println("Three");    }
}
class ConstuctorOrder1
{
    public static void main(String args[])
    {    C x = new C();    }
}

OUTPUT :
One
Two
Three

class A
{
    A()
    {    System.out.println("One");    }
    void met1()    {    System.out.println("Met1");    }
}
class B extends A
{
    B()
    {    System.out.println("Two");    }
}
class C extends B
{
    C()
{    System.out.println("Three");    }
}
class ConstuctorOrder2
{
    public static void main(String args[])
    {
        C x = new C();
        x.met1();
       }
}

OUTPUT :
One
Two
Three
Met1

class A
{
    A()
    {    System.out.println("One");    }
}
class B extends A
{
    B(int i)
    {    System.out.println("Four");    }
}
class C extends B
{
    C()
    {
System.out.println("Three");
    }
}
class ConstuctorOrder3
{
    public static void main(String args[])
    {
        C x = new C();
}
}
OUTPUT :    Compile Error – can not resolve symbol – Symbol : constructor B

class A
{
    A()
    {
        System.out.println("One");
    }
}
class B extends A
{
    B(int i)
    {
        System.out.println("Four");
    }
}
class C extends B
{
    C()
    {
        super(10);
        System.out.println("Three");
    }
}
class ConstuctorOrder4
{
    public static void main(String args[])
    {
        C x = new C();
        x.met1();
       }
}

OUTPUT :
One
Four
Three