Sobes.tech
Назад к вопросам
Junior — Middle
73

Можно ли реализовать в одном классе сразу два интерфейса, в каждом из которых есть методы с реализацией по умолчанию?

Ответ от нейросети

sobes.tech AI

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

Пример:

interface A {
    default void hello() {
        System.out.println("Hello from A");
    }
}

interface B {
    default void hello() {
        System.out.println("Hello from B");
    }
}

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

Таким образом, конфликт методов с реализацией по умолчанию решается переопределением в классе.