No entiendo por qué se genera una excepción IllegalAccessError en el siguiente ejemplo. El método foo() en Parent no puede ser heredado por Child porque es privado. Pero intentar llamar al método predeterminado foo() conduce a la excepción.
public class Parent { private void foo() { System.out.println("Parent-foo"); } } interface Boo { default void foo() { System.out.println("Boo-foo"); } } class Child extends Parent implements Boo { public static void main(String[] args) { new Child().foo(); // runtime IllegalAccessError; } }