Java inheritance method call
<p>I have a interesting scenario that.</p>

<pre><code>public class Base {

    public void hello(){
        this.say();
        System.out.println("hello-Base");
    }

    protected void say(){
        System.out.println("say-Base");
    }
}



public class Derived extends Base {

    public Derived(){
        super.hello();      
    }

    public static void main(String[] args) {
        Derived d = new Derived();      
    }

    public void say(){
        System.out.println("say-Derived");
    }

}
</code></pre>

<p>The output given is that:</p>

<pre><code>say-Derived
hello-Base
</code></pre>

<p>I was expecting that when super.hello() method was invoked, say() method of Base classes was invoked rather than say()method of Derived class.</p>

<p>What is the reason behind this logic?</p>
