Robin Robin - 3 months ago 23
Java Question

What is Interface.super

I have recently used default methods in java.
In its implementation I found

public interface DefaultMethod {
default String showMyName(String name){
return "Hai "+name;

}
}


public class DefaultMethodMainImpl implements DefaultMethod{

@Override
public String showMyName(String name){
return DefaultMethod.super.showMyName(name);

}
}


My question is in DefaultMethod.super where super will call it have no super class except Object? what super will return?

Answer

If you use super in a class it usually refers to the ancestor of that class (either the extended class or Object).

In the case of overriden default method of an interface you have to specify the specific interface which default implementation you want to invoke, hence

<Interface>.super.<method>();

See also The diamond problem.