Herencia del método predeterminado de Java 8

Digamos que hay los siguientes tipos:

public interface Base {

    default void sayHi(){
        System.out.println("hi from base");
    }
}

public interface Foo extends Base {
    @Override
    default void sayHi(){
        System.out.println("hi from foo");
    }
}

public interface Bar extends Base {
}

public class MyClass implements Foo, Bar {
    public static void main(String[] args) {
        MyClass c = new MyClass();
        c.sayHi();
    }
}

En este escenario, simain se ejecuta, se imprime "hola de foo". Por queFoo¿Tiene prioridad la implementación? NoBar heredarsayHi() deBase, ya que siMyClass era solo implementarBar, elBase se llamaría implementación? Por lo tanto, tendría sentido que el código aún no se compilara. Además, desdeBar debería tenerBaseimplementación desayHi(), ¿por qué no puedo anularlo enMyClass me gusta:

@Override
public void sayHi() {
    Bar.super.sayHi();
}

Se produce el siguiente error al intentar hacerlo:

Barra de calificador de tipo incorrecto en el método predeterminado de súper llamada, sayHi () se reemplaza en Foo

Respuestas a la pregunta(2)

Su respuesta a la pregunta