Как наследоваться нескольким базовым классам в Java? [дубликат]

16
задан Community 23 May 2017 в 10:29
поделиться

4 ответа

[

] Короткий ответ: Ты не можешь. 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();
  }

  ...
}
]
25
ответ дан 30 November 2019 в 15:24
поделиться
[

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

]
3
ответ дан 30 November 2019 в 15:24
поделиться
[

] Множественное наследование на 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 можно использовать []Default Methods[] в интерфейсах.[

].
27
ответ дан 30 November 2019 в 15:24
поделиться
[

] Java явно запрещает множественное наследование реализации. Остаётся использовать интерфейсы и композицию для достижения подобных результатов. [

]
2
ответ дан 30 November 2019 в 15:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: