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