Вопрос проверяет знание ограничений Java и понимание причин, по которым они были введены.
В Java множественное наследование классов не поддерживается. Класс может наследоваться только от одного другого класса. Это сделано для предотвращения конфликтов и неоднозначностей. Вместо этого в Java используются интерфейсы.
Java сознательно ограничивает модель наследования, чтобы упростить язык и избежать ошибок.
Определение:
Множественное наследование классов — это возможность наследоваться сразу от нескольких классов.
В Java это запрещено:
класс может иметь только одного родителя
используется ключевое слово extends только один раз
// так сделать нельзя
// class A extends B, C {}
Основная причина — проблема «ромба»:
два родительских класса имеют одинаковые методы
становится непонятно, какую реализацию использовать
Java решает эту проблему через интерфейсы:
класс может реализовывать несколько интерфейсов
реализация методов задаётся явно
public interface Flyable {
void fly();
}
public interface Swimmable {
void swim();
}
public class Duck implements Flyable, Swimmable {
public void fly() {}
public void swim() {}
}
Java не поддерживает множественное наследование классов ради простоты и безопасности. Для комбинирования поведения используются интерфейсы.