What is the order of the Constructors in this Java Code?
<p>Here is the code, I defined two class named Father and Son, and create them in the main function:</p>

<pre><code>public class Test {
    public static void main(String[] args) {
        Father father = new Son();
    }
}

class Father {
    private String name = "father";
    public Father() {
        who();
        tell(name);
    }
    public void who() {
        System.out.println("this is father");
    }
    public void tell(String name) {
        System.out.println("this is " + name);
    }
}

class Son extends Father {
    private String name = "son";
    public Son() {
        who();
        tell(name);
    }
    public void who() {
        System.out.println("this is son");
    }
    public void tell(String name) {
        System.out.println("this is " + name);
    }
}
</code></pre>

<p>and I got the output like this:</p>

<pre><code>this is son
this is father
this is son
this is son
</code></pre>

<p>But I can not understand how this happened? Anyone can tell me why?</p>
