The Calculator interface has calculate abstract method and ramdom() non-abstract method. I want to use super ramdom() and also Override ramdom() at concrete class CalculatorImpl. My question is why I have to call like that Calculator.super.ramdom() ? Why super.ramdon() don't work?
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;
}
}