Java: chamando um super método que chama um método substituído

public class SuperClass
{
    public void method1()
    {
        System.out.println("superclass method1");
        this.method2();
    }

    public void method2()
    {
        System.out.println("superclass method2");
    }

}

public class SubClass extends SuperClass
{
    @Override
    public void method1()
    {
        System.out.println("subclass method1");
        super.method1();
    }

    @Override
    public void method2()
    {
        System.out.println("subclass method2");
    }
}



public class Demo 
{
    public static void main(String[] args) 
    {
        SubClass mSubClass = new SubClass();
        mSubClass.method1();
    }
}

minha saída esperada:

subclasse method1
superclasse method1
superclasse method2

saída real:

subclasse method1
superclasse method1
subclasse method2

Eu sei que tecnicamente substituí um método público, mas achei que, como estava chamando o super, todas as chamadas dentro do super permaneceriam no super, isso não está acontecendo. Alguma idéia de como eu posso fazer isso acontecer?

questionAnswers(12)

yourAnswerToTheQuestion