How to inherit from multiple base classes in Java?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicates:
Cheat single inheritance in Java !!
Why is Multiple Inheritance not allowed in Java or C#?
Multiple Inheritance in java.
我知道我们可以使用接口从多个类继承,但是也可以继承状态吗?我如何继承来自2个类的定义并将它们在Java中的第三个类中继承?
Java中不允许多重继承。改用委托和接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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,可以在接口中使用默认方法。
简短的回答:你不能。Java只具有多个接口继承。
稍微长一点的回答:如果您确定您关心的方法在接口中,那么您可以有一个实现接口的类,然后委托给"超级类"的实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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(); } ... } |
不能,Java不支持多重继承。你能做的就是作曲。
Java明确禁止执行多继承。剩下的工作就是使用接口和组合来实现类似的结果。