Gymterview
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.