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