Herança de método padrão do Java 8

Digamos que existem os seguintes 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();
    }
}

Nesse cenário, semain é executado, "hi from foo" é impresso. PorqueFooimplementação tem precedência? NãoBar herdarsayHi() deBase, pois seMyClass era implementar apenasBar, aBase implementação seria chamada? Portanto, faria sentido que o código ainda não fosse compilado. Além disso, desdeBar deveriaBaseimplementação desayHi(), por que não posso substituí-loMyClass gostar:

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

O seguinte erro ocorre ao tentar fazer isso:

qualificador de tipo ruim Bar no método padrão de super chamada, sayHi () é substituído no Foo

questionAnswers(2)

yourAnswerToTheQuestion