Die Schnittstelle hat calculate
abstrakte Methode und ramdom()
nicht abstrakte Methode. Ich möchte superramdom()
und auch Overrideramdom()
bei Beton Klasse CalculatorImpl
verwenden. Meine Frage ist warum muss ich so anrufen Calculator.super.ramdom()
? Warum funktionieren super.ramdon()
nicht?Rufen Sie die nicht abstrakte Methode der Superschnittstelle in der konkreten Klasse auf
public interface Calculator {
double calculate(int a);
default double ramdom() {
System.out.println("Calculator ramdom");
return Math.random();
}
}
class CalculatorImpl implements Calculator {
@Override
public double calculate(int a) {
// calling super.ramdom() will get [The method ramdom() is undefined for
// the type Object error]
return Calculator.super.ramdom() * a;
}
@Override
public double ramdom() {
System.out.println("CalculatorImpl ramdom");
return 0;
}
}
Mögliche Duplikate von [Wie zu buchstabieren zufällig] ( – shmosel