От скольких классов может наследоваться один класс в Java?

«От скольких классов может наследоваться один класс в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java класс может наследоваться только от одного класса (одиночное наследование). Множественное наследование классов запрещено.

Причина: Запрет позволяет избежать проблем, таких как «алмаз смерти» (diamond problem) – неоднозначность при выборе метода, если два родительских класса имеют метод с одинаковой сигнатурой.

Однако класс может реализовывать любое количество интерфейсов:

class GrandParent {
    void method() { System.out.println("GrandParent"); }
}

interface InterfaceA {
    default void log() { System.out.println("Interface A"); }
}

interface InterfaceB {
    void log(); // abstract method
}

// Правильно: один класс + несколько интерфейсов
class Child extends GrandParent implements InterfaceA, InterfaceB {
    @Override
    public void log() { // Обязательная реализация из InterfaceB
        InterfaceA.super.log(); // Явный вызов default-метода из InterfaceA
    }
}

Итог:

  • extends – только один класс.
  • implements – неограниченное количество интерфейсов.