Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Множественное наследование Интерфейсов

#java


Допустим, два интерфейса, Alpha и Beta, реализуются в классе MyClass.

Что, если в обоих этих интерфейсах предоставляется метод reset(), объявляемый ­по
умолчанию? Какой из вариантов этого метода будет выбран в классе MyClass? Из интерфейса
Alpha или Beta? 

С другой стороны, рассмотрим ситуацию, когда интерфейс Beta расширяет интерфейс Alpha. 

Какой вариант метода по умолчанию используется в этом случае? А что, если в классе
MyClass предоставляется собственная реализация этого метода? 

Вопрос: приоритет отдается реализации метода в классе над его реализацией в интерфейсе.
Как это понять?
    


Ответы

Ответ 1



Какой из вариантов этого метода будет выбран в классе MyClass? Никакой. Будет ошибка на этапе компиляции. С другой стороны, рассмотрим ситуацию, когда интерфейс Beta расширяет интерфейс Alpha. В этом случае будет вызван метод из Beta. А что, если в классе MyClass предоставляется собственная реализация этого метода? Тогда будет использоваться реализация метода из самого класса. Вопрос: приоритет отдается реализации метода в классе над его реализацией в интерфейсе. Как это понять? Если в интерфейса есть реализация метода по умолчанию, а в классе (который реализует этот интерфейс) этот метод тоже есть, то будет вызван метод из класса. Собственно, утверждение из Вашего четвертого вопроса – это ответ на третий.

Комментариев нет:

Отправить комментарий