junior
Как вызывать default метод интерфейса в реализующем этот интерфейс классе?
Для вызова default-метода интерфейса из класса-реализации используется синтаксис ИмяИнтерфейса.super.имяМетода(). Это особенно полезно при конфликте default-методов из нескольких интерфейсов, когда нужно явно указать, какую реализацию использовать.
Пример
interface Paper {
default void show() {
System.out.println("default show()");
}
}
class Licence implements Paper {
public void show() {
Paper.super.show(); // вызов default-метода из Paper
}
}
Этот синтаксис также используется, когда класс хочет расширить поведение default-метода, добавив к нему собственную логику до или после вызова оригинальной реализации. Без указания имени интерфейса перед super компилятор не сможет определить, какой именно default-метод вызывать при множественной реализации интерфейсов.
На собеседовании: важно запомнить точный синтаксис
Interface.super.method()— именно имя интерфейса, а не класса, стоит передsuper.