Ответ
Поддержка множественного наследования классов зависит от языка программирования:
- Запрещено в Java, C#, Ruby. Класс может наследовать только от одного родительского класса, но может реализовывать несколько интерфейсов.
- Разрешено в C++, Python, но требует осторожности.
Проблема в C++ (ромбовидное наследование):
class A { public: int data; };
class B : public A {};
class C : public A {};
class D : public B, public C {}; // D содержит ДВЕ копии A::data
Решение — виртуальное наследование.
Пример в Java (интерфейсы):
interface Flyable { void fly(); }
interface Swimmable { void swim(); }
class Duck implements Flyable, Swimmable {
public void fly() { System.out.println("Flying"); }
public void swim() { System.out.println("Swimming"); }
}
Best Practice: Вместо множественного наследования часто предпочитают композицию (включение объектов других классов) для большей гибкости и избежания сложных иерархий.