从实现类访问重写的默认方法
在课堂上,super.foo()
只会查看超类。如果要从超级接口调用默认实现,则需要使用接口名称 Fooable.super.foo()
限定 super
。
public interface Fooable {
default int foo() {return 3;}
}
public class A extends Object implements Fooable {
@Override
public int foo() {
//return super.foo() + 1; //error: no method foo() in java.lang.Object
return Fooable.super.foo() + 1; //okay, returns 4
}
}