Предположим, что мы имеем класс
class A {
public void m() {
System.out.println("A - > m()");
}
}
и я хочу переопределить метод m() при создании класса без, сделав второй подкласс B для расширения A.
public static void main(String[] args) {
A a = new A() {
@Override
public void m() {
System.out.println("Override - > m()");
new Thread(new Runnable() {
@Override
public void run() {
// I want to be able to call the super method.
// This is illegal!
A.super.m();
}
}).start();
}
};
a.method();
}
В настоящее время мое решение заключается в создании частного метода, который вызывает super.m()
A a = new A() {
private void superMethod() {
super.m();
}
@Override
public void m() {
System.out.println("Overrided - > m()");
new Thread(new Runnable() {
@Override
public void run() {
superMethod();
}
}).start();
}
};
a.m();
Я хочу знать, почему я не могу написать A.super.m() и есть ли другой способ выполнить эту задачу.