Ответ
Нет, в Java множественное наследование классов (от нескольких родительских классов) запрещено. Это решение было принято для избежания проблемы "ромбовидного наследования" (diamond problem) и усложнения архитектуры.
Проблема "ромба":
// Представим, если бы было можно:
class A { void method() { System.out.println("A"); } }
class B extends A { void method() { System.out.println("B"); } }
class C extends A { void method() { System.out.println("C"); } }
// От какого method() должен наследовать D? От B или C? Неоднозначность!
class D extends B, C { } // В Java так НЕЛЬЗЯ
Альтернатива: множественная реализация интерфейсов.
Класс может реализовывать любое количество интерфейсов. Начиная с Java 8, интерфейсы могут содержать default-методы с реализацией, что позволяет наследовать поведение.
Разрешение конфликтов default-методов:
interface Engine {
default void start() { System.out.println("Engine starts"); }
}
interface AirConditioner {
default void start() { System.out.println("AC starts"); }
}
class Car implements Engine, AirConditioner {
// Компилятор требует явного разрешения конфликта имён
@Override
public void start() {
// Явный выбор реализации или своя логика
Engine.super.start(); // Запускаем двигатель первым
AirConditioner.super.start(); // Затем кондиционер
}
}
Итог: Java использует одиночное наследование классов + множественную реализацию интерфейсов. Это обеспечивает гибкость повторного использования кода, избегая семантических проблем.