在C ++中,你可以扩展许多类,那么这个设计在Java中的优点是什么类只能扩展一个类? 由于接口是一种纯类(实际上是抽象类),为什么不像类扩展那样限制接口的实现数量呢?
答案 0 :(得分:19)
能够只扩展一个基类是解决diamond problem的一种方法。当一个类扩展两个实现相同方法的基类时,会出现这个问题 - 你怎么知道要调用哪一个?
A.java:
public class A {
public int getValue() { return 0; }
}
B.java:
public class B {
public int getValue() { return 1; }
}
C.java:
public class C extends A, B {
public int doStuff() {
return super.getValue(); // Which superclass method is called?
}
}
由于接口不能实现,因此不会出现同样的问题。如果两个接口包含具有相同签名的方法,那么实际上只有一种方法,并且仍然没有冲突。