Java: вызов супер-метода, который вызывает замещенный метод

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();
    }
}

мой ожидаемый результат:

подкласс method1
суперкласс method1
суперкласс method2

фактический вывод:

подкласс method1
суперкласс method1
subclass method2

Технически я знаю, что переопределил общедоступный метод, но я полагал, что, поскольку я вызывал суперпользователь, любые вызовы внутри него останутся в суперпользователе, этого не происходит. Есть идеи, как это сделать?

86
задан Sean Patrick Floyd 4 January 2011 в 16:00
поделиться