Ответ
В 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– неограниченное количество интерфейсов.