Встречается на собеседованиях • сегодня

Можно ли имплементировать два интерфейса с default методами в одном классе

Да, можно, но если интерфейсы содержат default-методы с одинаковой сигнатурой, возникнет конфликт. В этом случае компилятор потребует явно переопределить метод в классе, указав, какую реализацию использовать (или предоставить свою).

Пример:

java
interface A {
    default void foo() { System.out.println("A"); }
}

interface B {
    default void foo() { System.out.println("B"); }
}

class C implements A, B {
    @Override
    public void foo() {
        A.super.foo(); // Явно вызываем реализацию из A
    }
}

Без переопределения foo() в классе C код не скомпилируется. Также можно полностью переопределить метод или вызвать реализацию из другого интерфейса через B.super.foo().

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы