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