Как наследовать от нескольких базовых классов в Java?

Возможные дубликаты:
Чит-одиночное наследование в Java!!
Почему множественное наследование не разрешено на Java или С#?


Множественное наследование в java.

Я знаю, что мы можем использовать интерфейсы для наследования из нескольких классов, но можно ли наследовать и состояние?
Как я могу наследовать методы с определениями из 2 классов и иметь их в третьем классе в Java?

Ответы

Ответ 1

В Java не допускается множественное наследование. Вместо этого используйте делегаты и интерфейсы

public interface AInterface {
        public void a();
}
public interface BInterface {
    public void b();
}

public class A implements AInterface {
    public void a() {}
}
public class B implements BInterface {
    public void b() {}
}

public class C implements AInterface, BInterface {
    private A a;
    private B b;

    public void a() {
        a.a();
    }
    public void b() {
        b.b();
    }
}

Так как Java 8 можно использовать Способы по умолчанию в интерфейсах.

Ответ 2

Короткий ответ: вы не можете. Java имеет только множественное наследование интерфейсов.

Немного более длинный ответ: если вы убедитесь, что методы, о которых вы заботитесь, находятся в интерфейсах, то вы можете иметь класс, который реализует интерфейсы, а затем делегирует экземпляры "суперклассов":

interface Noisy {
  void makeNoise();
}


interface Vehicle {
  void go(int distance);
}

class Truck implements Vehicle {
  ...
}

class Siren implements Noisy {
  ...
}

class Ambulance extends Truck implements Noisy {
  private Siren siren = new Siren();

  public makeNoise() {
    siren.makeNoise();
  }

  ...
}

Ответ 3

Вы не можете, Java не поддерживает множественное наследование. Что вы можете сделать, это композиция.

Ответ 4

Java явно запрещает множественное наследование реализации. Вы можете использовать интерфейсы и состав для достижения аналогичных результатов.