Java Language Accesso ai metodi predefiniti sottoposti a override dalla classe di implementazione


Esempio

Nelle classi, super.foo() apparirà solo nelle superclassi. Se si desidera chiamare un'implementazione predefinita da una superinterfaccia, è necessario qualificarsi super con il nome dell'interfaccia: Fooable.super.foo() .

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