Как наследовать от нескольких базовых классов в 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 явно запрещает множественное наследование реализации. Вы можете использовать интерфейсы и состав для достижения аналогичных результатов.