Встречается на собеседованиях • сегодня

Как сделать аналог множественного наследования

В Java нет множественного наследования, но можно использовать интерфейсы с default-методами или композицию.

1. Интерфейсы с default-методами:

java
interface A {
    default void foo() { System.out.println("A"); }
}

interface B {
    default void foo() { System.out.println("B"); }
}

class C implements A, B {
@Override
public void foo() { A.super.foo(); } // Явный вызов нужной реализации
}

text

**2. Композиция:**  
```java
class A { void foo() { System.out.println("A"); } }
class B { void bar() { System.out.println("B"); } }

class C {
    private A a = new A();
    private B b = new B();

    void foo() { a.foo(); }
    void bar() { b.bar(); }
}

Плюсы:

  • Избегаем проблем ромбовидного наследования.
  • Гибкость в выборе поведения.

Минусы:

  • Требуется ручное делегирование вызовов.
  • Увеличивается объем кода.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы