什么是Interface.super

Rob*_*bin 6 java

我最近在java中使用了默认方法.我发现它的实现

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

    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是在DefaultMethod.super中,super会调用它除了Object之外没有超类吗?什么超级会回来

Mar*_*uer 15

如果你super在a中使用class它通常是指该类的祖先(extended类或者Object).

在override的default方法的情况下,interface您必须指定要调用的默认实现的特定接口,因此

<Interface>.super.<method>();
Run Code Online (Sandbox Code Playgroud)

另见钻石问题.


小智 8

<Interface>.<method>();会认为<method>是静态的,而事实并非如此。因此,使用关键字super是用于引用“父”对象的引用变量。