Интерфейс гибридного наследования не выдает ошибку в Java? - PullRequest
0 голосов
/ 08 октября 2018

У меня есть три интерфейса A, B и C и один класс D. B и C расширяют A, а D реализует B и C. Интерфейс A имеет метод по умолчанию, который называется «делает».Я ожидал ошибки во время компиляции или во время выполнения, однако программа была выполнена без ошибок.И B, и C наследуются от A. Не следует ли путать компилятор относительно того, какой унаследованный метод вызывается в D, поскольку D наследует два метода по умолчанию, один из C и один из B. Все три интерфейса и класс определены в отдельныхфайлы.Я разместил код последовательно в области кода ниже для демонстрации.

public interface A {

    default public void does(){
        System.out.println("A");
    }
}

public interface B extends A {
}

public interface C extends A {
}

public class D implements B, C {    
}

public class Sample {

    public static void main(String[] args) {

        new D().does();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...